24 #include "precompiled.hpp"
25 #include "logging/log.hpp"
26 #include "logging/logConfiguration.hpp"
27 #include "logging/logDecorations.hpp"
28 #include "logging/logDecorators.hpp"
29 #include "logging/logDiagnosticCommand.hpp"
30 #include "logging/logFileOutput.hpp"
31 #include "logging/logOutput.hpp"
32 #include "logging/logTagLevelExpression.hpp"
33 #include "logging/logTagSet.hpp"
34 #include "memory/allocation.inline.hpp"
35 #include "memory/resourceArea.hpp"
36 #include "runtime/os.inline.hpp"
37 #include "utilities/globalDefinitions.hpp"
38
39 LogOutput** LogConfiguration::_outputs = NULL;
40 size_t LogConfiguration::_n_outputs = 0;
41
42 void LogConfiguration::post_initialize() {
43 assert(LogConfiguration_lock != NULL, "Lock must be initialized before post-initialization");
44 LogHandle(logging) log;
45 log.info("Log configuration fully initialized.");
46 if (log.is_trace()) {
47 ResourceMark rm;
48 describe(log.trace_stream());
49 }
50 LogDiagnosticCommand::registerCommand();
51 }
52
53 void LogConfiguration::initialize(jlong vm_start_time) {
54 LogFileOutput::set_file_name_parameters(vm_start_time);
55 LogDecorations::set_vm_start_time_millis(vm_start_time);
56
57 assert(_outputs == NULL, "Should not initialize _outputs before this function, initialize called twice?");
58 _outputs = NEW_C_HEAP_ARRAY(LogOutput*, 2, mtLogging);
59 _outputs[0] = LogOutput::Stdout;
60 _outputs[1] = LogOutput::Stderr;
61 _n_outputs = 2;
62 }
63
64 void LogConfiguration::finalize() {
65 for (size_t i = 2; i < _n_outputs; i++) {
66 delete _outputs[i];
67 }
68 FREE_C_HEAP_ARRAY(LogOutput*, _outputs);
69 }
70
|
24 #include "precompiled.hpp"
25 #include "logging/log.hpp"
26 #include "logging/logConfiguration.hpp"
27 #include "logging/logDecorations.hpp"
28 #include "logging/logDecorators.hpp"
29 #include "logging/logDiagnosticCommand.hpp"
30 #include "logging/logFileOutput.hpp"
31 #include "logging/logOutput.hpp"
32 #include "logging/logTagLevelExpression.hpp"
33 #include "logging/logTagSet.hpp"
34 #include "memory/allocation.inline.hpp"
35 #include "memory/resourceArea.hpp"
36 #include "runtime/os.inline.hpp"
37 #include "utilities/globalDefinitions.hpp"
38
39 LogOutput** LogConfiguration::_outputs = NULL;
40 size_t LogConfiguration::_n_outputs = 0;
41
42 void LogConfiguration::post_initialize() {
43 assert(LogConfiguration_lock != NULL, "Lock must be initialized before post-initialization");
44 LogDiagnosticCommand::registerCommand();
45 LogHandle(logging) log;
46 log.info("Log configuration fully initialized.");
47 if (log.is_trace()) {
48 ResourceMark rm;
49 MutexLocker ml(LogConfiguration_lock);
50 describe(log.trace_stream());
51 }
52 }
53
54 void LogConfiguration::initialize(jlong vm_start_time) {
55 LogFileOutput::set_file_name_parameters(vm_start_time);
56 LogDecorations::set_vm_start_time_millis(vm_start_time);
57
58 assert(_outputs == NULL, "Should not initialize _outputs before this function, initialize called twice?");
59 _outputs = NEW_C_HEAP_ARRAY(LogOutput*, 2, mtLogging);
60 _outputs[0] = LogOutput::Stdout;
61 _outputs[1] = LogOutput::Stderr;
62 _n_outputs = 2;
63 }
64
65 void LogConfiguration::finalize() {
66 for (size_t i = 2; i < _n_outputs; i++) {
67 delete _outputs[i];
68 }
69 FREE_C_HEAP_ARRAY(LogOutput*, _outputs);
70 }
71
|