libzypp  17.23.8
LogControl.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_BASE_LOGCONTROL_H
13 #define ZYPP_BASE_LOGCONTROL_H
14 
15 #include <iosfwd>
16 #include <ostream> //for std::endl
17 
18 #include <zypp/base/Logger.h>
19 #include <zypp/base/PtrTypes.h>
20 #include <zypp/Pathname.h>
21 
23 namespace zypp
24 {
25 
27  namespace log
28  {
29 
35  struct LineWriter
36  {
37  virtual void writeOut( const std::string & /*formated_r*/ )
38  {}
39  virtual ~LineWriter()
40  {}
41  };
42 
44  struct StreamLineWriter : public LineWriter
45  {
46  StreamLineWriter( std::ostream & str_r ) : _str( &str_r ) {}
47 
48  virtual void writeOut( const std::string & formated_r )
49  { (*_str) << formated_r << std::endl; }
50 
51  protected:
52  StreamLineWriter() : _str( 0 ) {}
53  std::ostream *_str;
54  };
55 
58  {
60  };
61 
64  {
66  };
67 
73  {
74  FileLineWriter( const Pathname & file_r, mode_t mode_r = 0 );
75  protected:
76  shared_ptr<void> _outs;
77  };
78 
80  } // namespace log
82 
83 
85  namespace base
86  {
87 
89  //
90  // CLASS NAME : LogControl
91  //
96  class LogControl
97  {
98  friend std::ostream & operator<<( std::ostream & str, const LogControl & obj );
99 
100  public:
103  { return LogControl(); }
104 
105 
108 
115  {
116  virtual std::string format( const std::string & /*group_r*/,
117  logger::LogLevel /*level_r*/,
118  const char * /*file_r*/,
119  const char * /*func_r*/,
120  int /*line_r*/,
121  const std::string & /*message_r*/ );
122  virtual ~LineFormater() {}
123  };
124 
125  public:
130  void setLineFormater( const shared_ptr<LineFormater> & formater_r );
131 
132  public:
139  void logfile( const Pathname & logfile_r );
140  void logfile( const Pathname & logfile_r, mode_t mode_r );
141 
143  void logNothing();
144 
146  void logToStdErr();
147 
148  public:
150  shared_ptr<LineWriter> getLineWriter() const;
151 
157  void setLineWriter( const shared_ptr<LineWriter> & writer_r );
158 
159  public:
162  {
163  TmpExcessive();
164  ~TmpExcessive();
165  };
166 
171  {
172  TmpLineWriter( const shared_ptr<LineWriter> & writer_r = shared_ptr<LineWriter>() )
174  { LogControl::instance().setLineWriter( writer_r ); }
175 
181  template<class TLineWriter>
182  TmpLineWriter( TLineWriter * _allocated_r )
184  { LogControl::instance().setLineWriter( shared_ptr<LineWriter>( _allocated_r ) ); }
185 
188 
189  private:
190  shared_ptr<LineWriter> _writer;
191  };
192 
193  private:
196  {}
197  };
199 
201  std::ostream & operator<<( std::ostream & str, const LogControl & obj );
202 
204  } // namespace base
207 } // namespace zypp
209 #endif // ZYPP_BASE_LOGCONTROL_H
zypp::log::StdoutLineWriter
LineWriter to stdout.
Definition: LogControl.h:57
zypp::log::StreamLineWriter::StreamLineWriter
StreamLineWriter(std::ostream &str_r)
Definition: LogControl.h:46
zypp::log::FileLineWriter
LineWriter to file.
Definition: LogControl.h:72
zypp::base::LogControl::TmpLineWriter::TmpLineWriter
TmpLineWriter(TLineWriter *_allocated_r)
Convenience ctor taking over ownership of an allocated LineWriter.
Definition: LogControl.h:182
zypp::base::LogControl::LineFormater::~LineFormater
virtual ~LineFormater()
Definition: LogControl.h:122
zypp::base::LogControl::setLineFormater
void setLineFormater(const shared_ptr< LineFormater > &formater_r)
Assign a LineFormater.
Definition: LogControl.cc:476
zypp::base::LogControl::TmpLineWriter::TmpLineWriter
TmpLineWriter(const shared_ptr< LineWriter > &writer_r=shared_ptr< LineWriter >())
Definition: LogControl.h:172
zypp::base::LogControl::TmpExcessive::TmpExcessive
TmpExcessive()
Definition: LogControl.cc:490
zypp::base::LogControl::LineWriter
log::LineWriter LineWriter
Definition: LogControl.h:107
PtrTypes.h
zypp::base::operator<<
std::ostream & operator<<(std::ostream &str, const Flags< TEnum > &obj)
Definition: Flags.h:166
zypp::base::LogControl::TmpExcessive::~TmpExcessive
~TmpExcessive()
Definition: LogControl.cc:492
Pathname.h
zypp::base::LogControl
Maintain logfile related options.
Definition: LogControl.h:96
zypp::log::StderrLineWriter
LineWriter to stderr.
Definition: LogControl.h:63
zypp::log::StderrLineWriter::StderrLineWriter
StderrLineWriter()
Definition: LogControl.cc:91
zypp::log::FileLineWriter::_outs
shared_ptr< void > _outs
Definition: LogControl.h:76
zypp::log::LineWriter::~LineWriter
virtual ~LineWriter()
Definition: LogControl.h:39
zypp::log::StreamLineWriter::_str
std::ostream * _str
Definition: LogControl.h:53
zypp::log::LineWriter
If you want to log the (formated) loglines by yourself, derive from this, and overload writeOut.
Definition: LogControl.h:35
zypp::base::LogControl::LineFormater::format
virtual std::string format(const std::string &, logger::LogLevel, const char *, const char *, int, const std::string &)
Definition: LogControl.cc:130
zypp::base::logger::LogLevel
LogLevel
Definition of log levels.
Definition: Logger.h:118
Logger.h
zypp::base::LogControl::TmpLineWriter::_writer
shared_ptr< LineWriter > _writer
Definition: LogControl.h:190
zypp::log::StdoutLineWriter::StdoutLineWriter
StdoutLineWriter()
Definition: LogControl.cc:87
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::log::StreamLineWriter::StreamLineWriter
StreamLineWriter()
Definition: LogControl.h:52
zypp::base::LogControl::getLineWriter
shared_ptr< LineWriter > getLineWriter() const
Get the current LineWriter.
Definition: LogControl.cc:470
zypp::log::StreamLineWriter::writeOut
virtual void writeOut(const std::string &formated_r)
Definition: LogControl.h:48
zypp::log::LineWriter::writeOut
virtual void writeOut(const std::string &)
Definition: LogControl.h:37
zypp::base::LogControl::LogControl
LogControl()
Default ctor: Singleton.
Definition: LogControl.h:195
zypp::base::LogControl::operator<<
friend std::ostream & operator<<(std::ostream &str, const LogControl &obj)
Definition: LogControl.cc:499
zypp::base::LogControl::logToStdErr
void logToStdErr()
Log to std::err.
Definition: LogControl.cc:482
zypp::base::LogControl::TmpExcessive
Turn on excessive logging for the lifetime of this object.
Definition: LogControl.h:161
zypp::base::LogControl::TmpLineWriter::~TmpLineWriter
~TmpLineWriter()
Definition: LogControl.h:186
zypp::base::LogControl::LineFormater
If you want to format loglines by yourself, derive from this, and overload format.
Definition: LogControl.h:114
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:44
zypp::base::LogControl::logNothing
void logNothing()
Turn off logging.
Definition: LogControl.cc:479
zypp::base::LogControl::TmpLineWriter
Exchange LineWriter for the lifetime of this object.
Definition: LogControl.h:170
zypp::base::LogControl::setLineWriter
void setLineWriter(const shared_ptr< LineWriter > &writer_r)
Assign a LineWriter.
Definition: LogControl.cc:473
str
String related utilities and Regular expression matching.
zypp::log::FileLineWriter::FileLineWriter
FileLineWriter(const Pathname &file_r, mode_t mode_r=0)
Definition: LogControl.cc:95
zypp::log::StreamLineWriter
Base class for ostream based LineWriter.
Definition: LogControl.h:44
zypp::base::LogControl::logfile
void logfile(const Pathname &logfile_r)
Set path for the logfile.
Definition: LogControl.cc:464
zypp::base::LogControl::instance
static LogControl instance()
Singleton access.
Definition: LogControl.h:102