< prev index next >

src/share/vm/logging/log.cpp

Print this page

        

*** 91,100 **** --- 91,101 ---- char* _saved_config; char* _new_output; Log(logging) _log; public: TestLogSavedConfig(const char* apply_output = NULL, const char* apply_setting = NULL) : _new_output(0) { + ResourceMark rm; _saved_config = os::strdup_check_oom(LogOutput::Stdout->config_string()); bool success = LogConfiguration::parse_log_arguments("stdout", "all=off", NULL, NULL, _log.error_stream()); assert(success, "test unable to turn all off"); if (apply_output) {
*** 103,112 **** --- 104,114 ---- assert(success, "test unable to apply test log configuration"); } } ~TestLogSavedConfig() { + ResourceMark rm; if (_new_output) { bool success = LogConfiguration::parse_log_arguments(_new_output, "all=off", NULL, NULL, _log.error_stream()); assert(success, "test unable to turn all off"); os::free(_new_output); }
*** 152,162 **** void Test_logconfiguration_subscribe() { ResourceMark rm; Log(logging) log; ! TestLogSavedConfig log_cfg("stdout", "logging+test=trace"); LogConfiguration::register_update_listener(&Test_logconfiguration_subscribe_helper); LogConfiguration::parse_log_arguments("stdout", "logging=trace", NULL, NULL, log.error_stream()); assert(Test_logconfiguration_subscribe_triggered == 1, "subscription not triggered (1)"); --- 154,164 ---- void Test_logconfiguration_subscribe() { ResourceMark rm; Log(logging) log; ! TestLogSavedConfig log_cfg("stdout", "logging*=trace"); LogConfiguration::register_update_listener(&Test_logconfiguration_subscribe_helper); LogConfiguration::parse_log_arguments("stdout", "logging=trace", NULL, NULL, log.error_stream()); assert(Test_logconfiguration_subscribe_triggered == 1, "subscription not triggered (1)");
*** 265,270 **** --- 267,323 ---- } } } } + #define Test_logtarget_string_literal "First line" + + + static void Test_logtarget_on() { + TestLogFile log_file("log_target"); + TestLogSavedConfig tlsc(log_file.name(), "gc=debug"); + + LogTarget(Debug, gc) log; + + assert(log.is_enabled(), "assert"); + + // Log the line and expect it to be available in the output file. + log.print(Test_logtarget_string_literal); + + FILE* fp = fopen(log_file.name(), "r"); + assert(fp, "File read error"); + + char output[256 /* Large enough buffer */]; + if (fgets(output, sizeof(output), fp) != NULL) { + assert(strstr(output, Test_logtarget_string_literal) != NULL, "log line missing"); + } + fclose(fp); + } + + static void Test_logtarget_off() { + TestLogFile log_file("log_target"); + TestLogSavedConfig tlsc(log_file.name(), "gc=info"); + + LogTarget(Debug, gc) log; + + // The log level for gc is info, so this log instance shouldn't be enabled. + assert(!log.is_enabled(), "assert"); + + // Try to log, but expect this to be filtered out. + log.print(Test_logtarget_string_literal); + + FILE* fp = fopen(log_file.name(), "r"); + assert(fp, "File read error"); + + char output[256 /* Large enough buffer */]; + if (fgets(output, sizeof(output), fp) != NULL) { + assert(strstr(output, Test_logtarget_string_literal) == NULL, "log line not missing"); + } + fclose(fp); + } + + void Test_logtarget() { + Test_logtarget_on(); + Test_logtarget_off(); + } + #endif // PRODUCT
< prev index next >