Chromium Code Reviews| Index: base/logging.cc |
| =================================================================== |
| --- base/logging.cc (revision 9544) |
| +++ base/logging.cc (working copy) |
| @@ -46,7 +46,7 @@ |
| bool g_enable_dcheck = false; |
| const char* const log_severity_names[LOG_NUM_SEVERITIES] = { |
| - "INFO", "WARNING", "ERROR", "FATAL" }; |
| + "INFO", "WARNING", "ERROR", "ERROR_REPORT", "FATAL" }; |
| int min_log_level = 0; |
| LogLockingState lock_log_file = LOCK_LOG_FILE; |
| @@ -89,8 +89,11 @@ |
| bool log_tickcount = false; |
| // An assert handler override specified by the client to be called instead of |
| +// the debug message dialog and process termination. |
| +LogAssertHandlerFunction log_assert_handler = NULL; |
| +// An report handler override specified by the client to be called instead of |
|
wtc
2009/02/19 01:32:04
Nit: add a blank line above this line.
|
| // the debug message dialog. |
| -LogAssertHandlerFunction log_assert_handler = NULL; |
| +LogReportHandlerFunction log_report_handler = NULL; |
| // The lock is used if log file locking is false. It helps us avoid problems |
| // with multiple threads writing to the log file at the same time. Use |
| @@ -291,6 +294,10 @@ |
| log_assert_handler = handler; |
| } |
| +void SetLogReportHandler(LogReportHandlerFunction handler) { |
| + log_report_handler = handler; |
| +} |
| + |
| // Displays a message box to the user with the error message in it. For |
| // Windows programs, it's possible that the message loop is messed up on |
| // a fatal error, and creating a MessageBox will cause that message loop |
| @@ -348,6 +355,13 @@ |
| stream_ << "Check failed: " << (*result.str_); |
| } |
| +LogMessage::LogMessage(const char* file, int line, LogSeverity severity, |
| + const CheckOpString& result) |
| + : severity_(severity) { |
| + Init(file, line); |
| + stream_ << "Check failed: " << (*result.str_); |
| +} |
| + |
| LogMessage::LogMessage(const char* file, int line) |
| : severity_(LOG_INFO) { |
| Init(file, line); |
| @@ -511,6 +525,13 @@ |
| // dump, but until then, do not invoke the Apple crash reporter. |
| } |
| } |
| + } else if (severity_ == LOG_ERROR_REPORT) { |
| + // We are here only if the user runs with --enable-dcheck in release mode. |
| + if (log_report_handler) { |
| + log_report_handler(std::string(stream_.str())); |
| + } else { |
| + DisplayDebugMessage(stream_.str()); |
| + } |
| } |
| } |