libzypp 17.38.1
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
20#include <zypp-core/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 void writeOut( const std::string & formated_r ) override
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:
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
129 {
130 std::string format( const std::string & /*group_r*/,
131 logger::LogLevel /*level_r*/,
132 const char * /*file_r*/,
133 const char * /*func_r*/,
134 int /*line_r*/,
135 const std::string & /*message_r*/ ) override;
136 };
137
138 public:
143 void setLineFormater( const shared_ptr<LineFormater> & formater_r );
144
150 void enableLogForwardingMode ( bool enable = true );
151
152 public:
159 void logfile( const Pathname & logfile_r );
160 void logfile( const Pathname & logfile_r, mode_t mode_r );
161
163 void logNothing();
164
166 void logToStdErr();
167
169 void emergencyShutdown();
170
176 static void notifyFork();
177
179 void logRawLine ( std::string &&line );
180
181 public:
184
190 void setLineWriter( const shared_ptr<LineWriter> & writer_r );
191
192 public:
195 {
196 TmpExcessive();
198 };
199
204 {
207 { LogControl::instance().setLineWriter( writer_r ); }
208
214 template<class TLineWriter>
215 TmpLineWriter( TLineWriter * _allocated_r )
217 { LogControl::instance().setLineWriter( shared_ptr<LineWriter>( _allocated_r ) ); }
218
220 { LogControl::instance().setLineWriter( _writer ); }
221
222 private:
224 };
225
226 private:
229 {}
230 };
231
232
234 std::ostream & operator<<( std::ostream & str, const LogControl & obj ) ZYPP_API;
235
237 } // namespace base
240} // namespace zypp
242#endif // ZYPP_BASE_LOGCONTROL_H
#define ZYPP_API
Definition Globals.h:69
friend std::ostream & operator<<(std::ostream &str, const LogControl &obj)
LogControl()
Default ctor: Singleton.
Definition LogControl.h:228
shared_ptr< LineWriter > getLineWriter() const
Get the current LineWriter.
void setLineWriter(const shared_ptr< LineWriter > &writer_r)
Assign a LineWriter.
void logToStdErr()
Log to std::err.
void logRawLine(std::string &&line)
will push a line to the logthread without formatting it
log::LineWriter LineWriter
Definition LogControl.h:107
void logNothing()
Turn off logging.
static void notifyFork()
This will completely disable logging.
void setLineFormater(const shared_ptr< LineFormater > &formater_r)
Assign a LineFormater.
static LogControl instance()
Singleton access.
Definition LogControl.h:102
void enableLogForwardingMode(bool enable=true)
void logfile(const Pathname &logfile_r)
Set path for the logfile.
void emergencyShutdown()
will cause the log thread to exit and flush all sockets
String related utilities and Regular expression matching.
LogLevel
Definition of log levels.
Definition Logger.h:156
std::ostream & operator<<(std::ostream &str, const Flags< TEnum > &obj)
Definition Flags.h:166
Our default format but without date, host and PID info.
Definition LogControl.h:129
std::string format(const std::string &, logger::LogLevel, const char *, const char *, int, const std::string &) override
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 &)
TmpLineWriter(const shared_ptr< LineWriter > &writer_r=shared_ptr< LineWriter >())
Definition LogControl.h:205
shared_ptr< LineWriter > _writer
Definition LogControl.h:223
TmpLineWriter(TLineWriter *_allocated_r)
Convenience ctor taking over ownership of an allocated LineWriter.
Definition LogControl.h:215
shared_ptr< void > _outs
Definition LogControl.h:76
FileLineWriter(const Pathname &file_r, mode_t mode_r=0)
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
StreamLineWriter(std::ostream &str_r)
Definition LogControl.h:46
void writeOut(const std::string &formated_r) override
Definition LogControl.h:48