26
27 #include "logging/logDecorators.hpp"
28 #include "logging/logLevel.hpp"
29 #include "memory/allocation.hpp"
30 #include "utilities/globalDefinitions.hpp"
31
32 class LogDecorations;
33 class LogTagSet;
34
35 // The base class/interface for log outputs.
36 // Keeps track of the latest configuration string,
37 // and its selected decorators.
38 class LogOutput : public CHeapObj<mtLogging> {
39 // Make LogConfiguration a friend to allow it to modify the configuration string.
40 friend class LogConfiguration;
41
42 private:
43 static const size_t InitialConfigBufferSize = 256;
44 char* _config_string;
45 size_t _config_string_buffer_size;
46
47 protected:
48 LogDecorators _decorators;
49
50 // Clears any previous config description in preparation of reconfiguration.
51 void clear_config_string();
52 // Adds the tagset on the given level to the config description (e.g. "tag1+tag2=level").
53 void add_to_config_string(const LogTagSet* ts, LogLevelType level);
54 // Replaces the current config description with the given string.
55 void set_config_string(const char* string);
56
57 public:
58 static LogOutput* const Stdout;
59 static LogOutput* const Stderr;
60
61 void set_decorators(const LogDecorators &decorators) {
62 _decorators = decorators;
63 }
64
65 const LogDecorators& decorators() const {
66 return _decorators;
67 }
68
69 const char* config_string() const {
70 return _config_string;
71 }
72
73 LogOutput() : _config_string(NULL), _config_string_buffer_size(0) {
74 }
75
76 virtual ~LogOutput();
77
78 // If the output can be rotated, trigger a forced rotation, otherwise do nothing.
79 // Log outputs with rotation capabilities should override this.
80 virtual void force_rotate() {
81 // Do nothing by default.
82 }
83
84 virtual const char* name() const = 0;
85 virtual bool initialize(const char* options) = 0;
86 virtual int write(const LogDecorations &decorations, const char* msg) = 0;
87 };
88
89 #endif // SHARE_VM_LOGGING_LOGOUTPUT_HPP
|
26
27 #include "logging/logDecorators.hpp"
28 #include "logging/logLevel.hpp"
29 #include "memory/allocation.hpp"
30 #include "utilities/globalDefinitions.hpp"
31
32 class LogDecorations;
33 class LogTagSet;
34
35 // The base class/interface for log outputs.
36 // Keeps track of the latest configuration string,
37 // and its selected decorators.
38 class LogOutput : public CHeapObj<mtLogging> {
39 // Make LogConfiguration a friend to allow it to modify the configuration string.
40 friend class LogConfiguration;
41
42 private:
43 static const size_t InitialConfigBufferSize = 256;
44 char* _config_string;
45 size_t _config_string_buffer_size;
46 char* _option_string;
47
48 protected:
49 LogDecorators _decorators;
50
51 // Clears any previous config description in preparation of reconfiguration.
52 void clear_config_string();
53 // Adds the tagset on the given level to the config description (e.g. "tag1+tag2=level").
54 void add_to_config_string(const LogTagSet* ts, LogLevelType level);
55 // Replaces the current config description with the given string.
56 void set_config_string(const char* string);
57 // Replaces the current output option with the given string.
58 void set_option_string(const char* string);
59
60 public:
61 static LogOutput* const Stdout;
62 static LogOutput* const Stderr;
63
64 void set_decorators(const LogDecorators &decorators) {
65 _decorators = decorators;
66 }
67
68 const LogDecorators& decorators() const {
69 return _decorators;
70 }
71
72 const char* config_string() const {
73 return _config_string;
74 }
75
76 const char* option_string() const {
77 return _option_string;
78 }
79
80 LogOutput() : _config_string(NULL), _config_string_buffer_size(0), _option_string(NULL) {
81 }
82
83 virtual ~LogOutput();
84
85 // If the output can be rotated, trigger a forced rotation, otherwise do nothing.
86 // Log outputs with rotation capabilities should override this.
87 virtual void force_rotate() {
88 // Do nothing by default.
89 }
90
91 virtual const char* name() const = 0;
92 virtual bool initialize(const char* options) = 0;
93 virtual int write(const LogDecorations &decorations, const char* msg) = 0;
94 };
95
96 #endif // SHARE_VM_LOGGING_LOGOUTPUT_HPP
|