LSSTApplications  10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
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
virtual void write(std::ostream *strm, const LogRecord &rec)
BriefFormatter(bool verbose=false)
Definition: LogFormatter.h:121
IndentedFormatter & operator=(const IndentedFormatter &that)
Definition: LogFormatter.h:209
NetLoggerFormatter(const std::string &valueDelim=defaultValDelim)
BriefFormatter(const BriefFormatter &that)
Definition: LogFormatter.h:128
a container for constructing a single Log record
Definition: LogRecord.h:99
std::map< std::string, char > TypeSymbolMap
Definition: LogFormatter.h:274
NetLoggerFormatter(const NetLoggerFormatter &that)
Definition: LogFormatter.h:242
a formatter that renders records in a netlogger-like format.
Definition: LogFormatter.h:229
LogFormatter & operator=(const LogFormatter &that)
Definition: LogFormatter.h:94
virtual void write(std::ostream *strm, const LogRecord &rec)
NetLoggerFormatter & operator=(const NetLoggerFormatter &that)
virtual void write(std::ostream *strm, const LogRecord &rec)=0
virtual void write(std::ostream *strm, const LogRecord &rec)
BriefFormatter & operator=(const BriefFormatter &that)
Definition: LogFormatter.h:140
IndentedFormatter(const IndentedFormatter &that)
Definition: LogFormatter.h:197
Interface for PropertySet class.
static const std::string defaultValDelim
Definition: LogFormatter.h:271
a formatter that renders records in a brief format for screen display.
Definition: LogFormatter.h:114
const std::string & getValueDelimiter() const
Definition: LogFormatter.h:262
an abstract class for formatting log records into a text stream.
Definition: LogFormatter.h:73
LogFormatter(const LogFormatter &that)
Definition: LogFormatter.h:84