libzypp 17.25.7
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
23namespace zypp
24{
25
27 namespace log
28 {
29
36 {
37 virtual void writeOut( const std::string & /*formated_r*/ )
38 {}
39 virtual ~LineWriter()
40 {}
41 };
42
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:
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 //
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();
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
Maintain logfile related options.
Definition: LogControl.h:97
friend std::ostream & operator<<(std::ostream &str, const LogControl &obj)
Definition: LogControl.cc:500
LogControl()
Default ctor: Singleton.
Definition: LogControl.h:195
shared_ptr< LineWriter > getLineWriter() const
Get the current LineWriter.
Definition: LogControl.cc:470
void setLineWriter(const shared_ptr< LineWriter > &writer_r)
Assign a LineWriter.
Definition: LogControl.cc:473
void logToStdErr()
Log to std::err.
Definition: LogControl.cc:482
void logNothing()
Turn off logging.
Definition: LogControl.cc:479
void setLineFormater(const shared_ptr< LineFormater > &formater_r)
Assign a LineFormater.
Definition: LogControl.cc:476
static LogControl instance()
Singleton access.
Definition: LogControl.h:102
void logfile(const Pathname &logfile_r)
Set path for the logfile.
Definition: LogControl.cc:464
log::LineWriter LineWriter
Definition: LogControl.h:107
String related utilities and Regular expression matching.
LogLevel
Definition of log levels.
Definition: Logger.h:118
std::ostream & operator<<(std::ostream &str, const Flags< TEnum > &obj)
Definition: Flags.h:166
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
If you want to format loglines by yourself, derive from this, and overload format.
Definition: LogControl.h:115
virtual std::string format(const std::string &, logger::LogLevel, const char *, const char *, int, const std::string &)
Definition: LogControl.cc:130
Turn on excessive logging for the lifetime of this object.
Definition: LogControl.h:162
Exchange LineWriter for the lifetime of this object.
Definition: LogControl.h:171
TmpLineWriter(const shared_ptr< LineWriter > &writer_r=shared_ptr< LineWriter >())
Definition: LogControl.h:172
shared_ptr< LineWriter > _writer
Definition: LogControl.h:190
TmpLineWriter(TLineWriter *_allocated_r)
Convenience ctor taking over ownership of an allocated LineWriter.
Definition: LogControl.h:182
LineWriter to file.
Definition: LogControl.h:73
shared_ptr< void > _outs
Definition: LogControl.h:76
FileLineWriter(const Pathname &file_r, mode_t mode_r=0)
Definition: LogControl.cc:95
If you want to log the (formated) loglines by yourself, derive from this, and overload writeOut.
Definition: LogControl.h:36
virtual void writeOut(const std::string &)
Definition: LogControl.h:37
virtual ~LineWriter()
Definition: LogControl.h:39
LineWriter to stderr.
Definition: LogControl.h:64
LineWriter to stdout.
Definition: LogControl.h:58
Base class for ostream based LineWriter.
Definition: LogControl.h:45
StreamLineWriter(std::ostream &str_r)
Definition: LogControl.h:46
virtual void writeOut(const std::string &formated_r)
Definition: LogControl.h:48