25 #define SHARE_VM_LOGGING_LOGFILESTREAMOUTPUT_HPP
26
27 #include "logging/logDecorators.hpp"
28 #include "logging/logOutput.hpp"
29 #include "utilities/globalDefinitions.hpp"
30
31 class LogDecorations;
32
33 // Base class for all FileStream-based log outputs.
34 class LogFileStreamOutput : public LogOutput {
35 protected:
36 FILE* _stream;
37 size_t _decorator_padding[LogDecorators::Count];
38
39 LogFileStreamOutput(FILE *stream) : _stream(stream) {
40 for (size_t i = 0; i < LogDecorators::Count; i++) {
41 _decorator_padding[i] = 0;
42 }
43 }
44
45 public:
46 virtual int write(const LogDecorations &decorations, const char* msg);
47 };
48
49 class LogStdoutOutput : public LogFileStreamOutput {
50 friend class LogOutput;
51 private:
52 static LogStdoutOutput _instance;
53 LogStdoutOutput() : LogFileStreamOutput(stdout) {
54 set_config_string("all=off");
55 }
56 virtual bool initialize(const char* options) {
57 return false;
58 }
59 public:
60 virtual const char* name() const {
61 return "stdout";
62 }
63 };
64
65 class LogStderrOutput : public LogFileStreamOutput {
66 friend class LogOutput;
|
25 #define SHARE_VM_LOGGING_LOGFILESTREAMOUTPUT_HPP
26
27 #include "logging/logDecorators.hpp"
28 #include "logging/logOutput.hpp"
29 #include "utilities/globalDefinitions.hpp"
30
31 class LogDecorations;
32
33 // Base class for all FileStream-based log outputs.
34 class LogFileStreamOutput : public LogOutput {
35 protected:
36 FILE* _stream;
37 size_t _decorator_padding[LogDecorators::Count];
38
39 LogFileStreamOutput(FILE *stream) : _stream(stream) {
40 for (size_t i = 0; i < LogDecorators::Count; i++) {
41 _decorator_padding[i] = 0;
42 }
43 }
44
45 int write_decorations(char* buffer,
46 size_t buffer_length,
47 const LogDecorations& decorations);
48
49 public:
50 virtual int write(const LogDecorations& decorations, const char* msg);
51 virtual int write(LogMessageBuffer::Iterator msg_iterator);
52 };
53
54 class LogStdoutOutput : public LogFileStreamOutput {
55 friend class LogOutput;
56 private:
57 static LogStdoutOutput _instance;
58 LogStdoutOutput() : LogFileStreamOutput(stdout) {
59 set_config_string("all=off");
60 }
61 virtual bool initialize(const char* options) {
62 return false;
63 }
64 public:
65 virtual const char* name() const {
66 return "stdout";
67 }
68 };
69
70 class LogStderrOutput : public LogFileStreamOutput {
71 friend class LogOutput;
|