LSSTApplications  1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
LSSTDataManagementBasePackage
LogFormatter.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
32 #ifndef LSST_PEX_LOGFORMATTER_H
33 #define LSST_PEX_LOGFORMATTER_H
34 
35 #include <string>
36 #include <map>
37 #include <ostream>
38 
40 #include "boost/any.hpp"
41 
42 namespace lsst {
43 namespace pex {
44 namespace logging {
45 
46 // forward declaration
47 class LogRecord;
48 
73 class LogFormatter {
74 public:
75 
80 
84  LogFormatter(const LogFormatter& that) { }
85 
89  virtual ~LogFormatter();
90 
94  LogFormatter& operator=(const LogFormatter& that) { return *this; }
95 
102  virtual void write(std::ostream *strm, const LogRecord &rec) = 0;
103 
104 };
105 
114 class BriefFormatter : public LogFormatter {
115 public:
116 
121  explicit BriefFormatter(bool verbose=false)
122  : LogFormatter(), _doAll(verbose)
123  { }
124 
129  : LogFormatter(that), _doAll(that._doAll)
130  { }
131 
135  virtual ~BriefFormatter();
136 
141  if (this == &that) return *this;
142 
143  dynamic_cast<LogFormatter*>(this)->operator=(that);
144  _doAll = that._doAll;
145  return *this;
146  }
147 
154  bool isVerbose() { return _doAll; }
155 
163  void setVerbose(bool printAll) { _doAll = printAll; }
164 
170  virtual void write(std::ostream *strm, const LogRecord& rec);
171 
172 private:
173 
174  bool _doAll;
175 };
176 
184 public:
185 
190  explicit IndentedFormatter(bool verbose=false)
191  : BriefFormatter(verbose)
192  { }
193 
198  : BriefFormatter(that)
199  { }
200 
204  virtual ~IndentedFormatter();
205 
210  if (this == &that) return *this;
211 
212  dynamic_cast<BriefFormatter*>(this)->operator=(that);
213  return *this;
214  }
215 
221  virtual void write(std::ostream *strm, const LogRecord& rec);
222 };
223 
230 public:
231 
237  explicit NetLoggerFormatter(const std::string& valueDelim = defaultValDelim);
238 
243  : LogFormatter(that), _tplookup(), _midfix(that._midfix)
244  {
245  loadTypeLookup();
246  }
247 
251  virtual ~NetLoggerFormatter();
252 
257 
262  const std::string& getValueDelimiter() const { return _midfix; }
263 
269  virtual void write(std::ostream *strm, const LogRecord& rec);
270 
271  static const std::string defaultValDelim;
272 
273 private:
274  typedef std::map<std::string, char> TypeSymbolMap;
275  void loadTypeLookup();
276 
278  std::string _midfix;
279 };
280 
281 }}} // end lsst::pex::logging
282 
283 #endif // end LSST_PEX_LOGFORMATTER_H
LogFormatter & operator=(const LogFormatter &that)
Definition: LogFormatter.h:94
virtual void write(std::ostream *strm, const LogRecord &rec)=0
NetLoggerFormatter & operator=(const NetLoggerFormatter &that)
IndentedFormatter(bool verbose=false)
Definition: LogFormatter.h:190
LogFormatter(const LogFormatter &that)
Definition: LogFormatter.h:84
IndentedFormatter & operator=(const IndentedFormatter &that)
Definition: LogFormatter.h:209
virtual void write(std::ostream *strm, const LogRecord &rec)
std::map< std::string, char > TypeSymbolMap
Definition: LogFormatter.h:274
void setVerbose(bool printAll)
Definition: LogFormatter.h:163
virtual void write(std::ostream *strm, const LogRecord &rec)
a container for constructing a single Log record
Definition: LogRecord.h:99
IndentedFormatter(const IndentedFormatter &that)
Definition: LogFormatter.h:197
static const std::string defaultValDelim
Definition: LogFormatter.h:271
a formatter that renders records in a netlogger-like format.
Definition: LogFormatter.h:229
NetLoggerFormatter(const NetLoggerFormatter &that)
Definition: LogFormatter.h:242
virtual void write(std::ostream *strm, const LogRecord &rec)
BriefFormatter(bool verbose=false)
Definition: LogFormatter.h:121
const std::string & getValueDelimiter() const
Definition: LogFormatter.h:262
Interface for PropertySet class.
a formatter that renders records in a brief format for screen display.
Definition: LogFormatter.h:114
an abstract class for formatting log records into a text stream.
Definition: LogFormatter.h:73
BriefFormatter(const BriefFormatter &that)
Definition: LogFormatter.h:128
NetLoggerFormatter(const std::string &valueDelim=defaultValDelim)
BriefFormatter & operator=(const BriefFormatter &that)
Definition: LogFormatter.h:140