< prev index next >
src/share/vm/logging/logFileStreamOutput.hpp
Print this page
rev 12117 : 8146009:
@@ -28,10 +28,18 @@
#include "logging/logOutput.hpp"
#include "utilities/globalDefinitions.hpp"
class LogDecorations;
+class LogFileStreamInitializer {
+ public:
+ LogFileStreamInitializer();
+};
+
+// Ensure the default log streams have been initialized (stdout, stderr) using the static initializer below
+static LogFileStreamInitializer log_stream_initializer;
+
// Base class for all FileStream-based log outputs.
class LogFileStreamOutput : public LogOutput {
protected:
FILE* _stream;
size_t _decorator_padding[LogDecorators::Count];
@@ -48,13 +56,12 @@
virtual int write(const LogDecorations& decorations, const char* msg);
virtual int write(LogMessageBuffer::Iterator msg_iterator);
};
class LogStdoutOutput : public LogFileStreamOutput {
- friend class LogOutput;
+ friend class LogFileStreamInitializer;
private:
- static LogStdoutOutput _instance;
LogStdoutOutput() : LogFileStreamOutput(stdout) {
set_config_string("all=warning");
}
virtual bool initialize(const char* options, outputStream* errstream) {
return false;
@@ -64,13 +71,12 @@
return "stdout";
}
};
class LogStderrOutput : public LogFileStreamOutput {
- friend class LogOutput;
+ friend class LogFileStreamInitializer;
private:
- static LogStderrOutput _instance;
LogStderrOutput() : LogFileStreamOutput(stderr) {
set_config_string("all=off");
}
virtual bool initialize(const char* options, outputStream* errstream) {
return false;
@@ -79,6 +85,9 @@
virtual const char* name() const {
return "stderr";
}
};
+extern LogStderrOutput &StderrLog;
+extern LogStdoutOutput &StdoutLog;
+
#endif // SHARE_VM_LOGGING_LOGFILESTREAMOUTPUT_HPP
< prev index next >