| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/logging.h" | 5 #include "base/logging.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <io.h> | 8 #include <io.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 typedef HANDLE FileHandle; | 10 typedef HANDLE FileHandle; |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 ::SetLastError(last_error_); | 523 ::SetLastError(last_error_); |
| 524 } | 524 } |
| 525 #endif // defined(OS_WIN) | 525 #endif // defined(OS_WIN) |
| 526 | 526 |
| 527 LogMessage::LogMessage(const char* file, int line, LogSeverity severity, | 527 LogMessage::LogMessage(const char* file, int line, LogSeverity severity, |
| 528 int ctr) | 528 int ctr) |
| 529 : severity_(severity), file_(file), line_(line) { | 529 : severity_(severity), file_(file), line_(line) { |
| 530 Init(file, line); | 530 Init(file, line); |
| 531 } | 531 } |
| 532 | 532 |
| 533 LogMessage::LogMessage(const char* file, int line) |
| 534 : severity_(LOG_INFO), file_(file), line_(line) { |
| 535 Init(file, line); |
| 536 } |
| 537 |
| 538 LogMessage::LogMessage(const char* file, int line, LogSeverity severity) |
| 539 : severity_(severity), file_(file), line_(line) { |
| 540 Init(file, line); |
| 541 } |
| 542 |
| 533 LogMessage::LogMessage(const char* file, int line, const CheckOpString& result) | 543 LogMessage::LogMessage(const char* file, int line, const CheckOpString& result) |
| 534 : severity_(LOG_FATAL), file_(file), line_(line) { | 544 : severity_(LOG_FATAL), file_(file), line_(line) { |
| 535 Init(file, line); | 545 Init(file, line); |
| 536 stream_ << "Check failed: " << (*result.str_); | 546 stream_ << "Check failed: " << (*result.str_); |
| 537 } | 547 } |
| 538 | 548 |
| 539 LogMessage::LogMessage(const char* file, int line, LogSeverity severity, | 549 LogMessage::LogMessage(const char* file, int line, LogSeverity severity, |
| 540 const CheckOpString& result) | 550 const CheckOpString& result) |
| 541 : severity_(severity), file_(file), line_(line) { | 551 : severity_(severity), file_(file), line_(line) { |
| 542 Init(file, line); | 552 Init(file, line); |
| 543 stream_ << "Check failed: " << (*result.str_); | 553 stream_ << "Check failed: " << (*result.str_); |
| 544 } | 554 } |
| 545 | 555 |
| 546 LogMessage::LogMessage(const char* file, int line) | |
| 547 : severity_(LOG_INFO), file_(file), line_(line) { | |
| 548 Init(file, line); | |
| 549 } | |
| 550 | |
| 551 LogMessage::LogMessage(const char* file, int line, LogSeverity severity) | |
| 552 : severity_(severity), file_(file), line_(line) { | |
| 553 Init(file, line); | |
| 554 } | |
| 555 | |
| 556 // writes the common header info to the stream | |
| 557 void LogMessage::Init(const char* file, int line) { | |
| 558 base::StringPiece filename(file); | |
| 559 size_t last_slash_pos = filename.find_last_of("\\/"); | |
| 560 if (last_slash_pos != base::StringPiece::npos) | |
| 561 filename.remove_prefix(last_slash_pos + 1); | |
| 562 | |
| 563 // TODO(darin): It might be nice if the columns were fixed width. | |
| 564 | |
| 565 stream_ << '['; | |
| 566 if (log_process_id) | |
| 567 stream_ << CurrentProcessId() << ':'; | |
| 568 if (log_thread_id) | |
| 569 stream_ << CurrentThreadId() << ':'; | |
| 570 if (log_timestamp) { | |
| 571 time_t t = time(NULL); | |
| 572 struct tm local_time = {0}; | |
| 573 #if _MSC_VER >= 1400 | |
| 574 localtime_s(&local_time, &t); | |
| 575 #else | |
| 576 localtime_r(&t, &local_time); | |
| 577 #endif | |
| 578 struct tm* tm_time = &local_time; | |
| 579 stream_ << std::setfill('0') | |
| 580 << std::setw(2) << 1 + tm_time->tm_mon | |
| 581 << std::setw(2) << tm_time->tm_mday | |
| 582 << '/' | |
| 583 << std::setw(2) << tm_time->tm_hour | |
| 584 << std::setw(2) << tm_time->tm_min | |
| 585 << std::setw(2) << tm_time->tm_sec | |
| 586 << ':'; | |
| 587 } | |
| 588 if (log_tickcount) | |
| 589 stream_ << TickCount() << ':'; | |
| 590 if (severity_ >= 0) | |
| 591 stream_ << log_severity_names[severity_]; | |
| 592 else | |
| 593 stream_ << "VERBOSE" << -severity_; | |
| 594 | |
| 595 stream_ << ":" << filename << "(" << line << ")] "; | |
| 596 | |
| 597 message_start_ = stream_.tellp(); | |
| 598 } | |
| 599 | |
| 600 LogMessage::~LogMessage() { | 556 LogMessage::~LogMessage() { |
| 601 #ifndef NDEBUG | 557 #ifndef NDEBUG |
| 602 if (severity_ == LOG_FATAL) { | 558 if (severity_ == LOG_FATAL) { |
| 603 // Include a stack trace on a fatal. | 559 // Include a stack trace on a fatal. |
| 604 base::debug::StackTrace trace; | 560 base::debug::StackTrace trace; |
| 605 stream_ << std::endl; // Newline to separate from log message. | 561 stream_ << std::endl; // Newline to separate from log message. |
| 606 trace.OutputToStream(&stream_); | 562 trace.OutputToStream(&stream_); |
| 607 } | 563 } |
| 608 #endif | 564 #endif |
| 609 stream_ << std::endl; | 565 stream_ << std::endl; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 } else if (severity_ == LOG_ERROR_REPORT) { | 639 } else if (severity_ == LOG_ERROR_REPORT) { |
| 684 // We are here only if the user runs with --enable-dcheck in release mode. | 640 // We are here only if the user runs with --enable-dcheck in release mode. |
| 685 if (log_report_handler) { | 641 if (log_report_handler) { |
| 686 log_report_handler(std::string(stream_.str())); | 642 log_report_handler(std::string(stream_.str())); |
| 687 } else { | 643 } else { |
| 688 DisplayDebugMessageInDialog(stream_.str()); | 644 DisplayDebugMessageInDialog(stream_.str()); |
| 689 } | 645 } |
| 690 } | 646 } |
| 691 } | 647 } |
| 692 | 648 |
| 649 // writes the common header info to the stream |
| 650 void LogMessage::Init(const char* file, int line) { |
| 651 base::StringPiece filename(file); |
| 652 size_t last_slash_pos = filename.find_last_of("\\/"); |
| 653 if (last_slash_pos != base::StringPiece::npos) |
| 654 filename.remove_prefix(last_slash_pos + 1); |
| 655 |
| 656 // TODO(darin): It might be nice if the columns were fixed width. |
| 657 |
| 658 stream_ << '['; |
| 659 if (log_process_id) |
| 660 stream_ << CurrentProcessId() << ':'; |
| 661 if (log_thread_id) |
| 662 stream_ << CurrentThreadId() << ':'; |
| 663 if (log_timestamp) { |
| 664 time_t t = time(NULL); |
| 665 struct tm local_time = {0}; |
| 666 #if _MSC_VER >= 1400 |
| 667 localtime_s(&local_time, &t); |
| 668 #else |
| 669 localtime_r(&t, &local_time); |
| 670 #endif |
| 671 struct tm* tm_time = &local_time; |
| 672 stream_ << std::setfill('0') |
| 673 << std::setw(2) << 1 + tm_time->tm_mon |
| 674 << std::setw(2) << tm_time->tm_mday |
| 675 << '/' |
| 676 << std::setw(2) << tm_time->tm_hour |
| 677 << std::setw(2) << tm_time->tm_min |
| 678 << std::setw(2) << tm_time->tm_sec |
| 679 << ':'; |
| 680 } |
| 681 if (log_tickcount) |
| 682 stream_ << TickCount() << ':'; |
| 683 if (severity_ >= 0) |
| 684 stream_ << log_severity_names[severity_]; |
| 685 else |
| 686 stream_ << "VERBOSE" << -severity_; |
| 687 |
| 688 stream_ << ":" << filename << "(" << line << ")] "; |
| 689 |
| 690 message_start_ = stream_.tellp(); |
| 691 } |
| 692 |
| 693 #if defined(OS_WIN) | 693 #if defined(OS_WIN) |
| 694 // This has already been defined in the header, but defining it again as DWORD | 694 // This has already been defined in the header, but defining it again as DWORD |
| 695 // ensures that the type used in the header is equivalent to DWORD. If not, | 695 // ensures that the type used in the header is equivalent to DWORD. If not, |
| 696 // the redefinition is a compile error. | 696 // the redefinition is a compile error. |
| 697 typedef DWORD SystemErrorCode; | 697 typedef DWORD SystemErrorCode; |
| 698 #endif | 698 #endif |
| 699 | 699 |
| 700 SystemErrorCode GetLastSystemErrorCode() { | 700 SystemErrorCode GetLastSystemErrorCode() { |
| 701 #if defined(OS_WIN) | 701 #if defined(OS_WIN) |
| 702 return ::GetLastError(); | 702 return ::GetLastError(); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 | 817 |
| 818 if (level == LOG_FATAL) | 818 if (level == LOG_FATAL) |
| 819 base::debug::BreakDebugger(); | 819 base::debug::BreakDebugger(); |
| 820 } | 820 } |
| 821 | 821 |
| 822 } // namespace logging | 822 } // namespace logging |
| 823 | 823 |
| 824 std::ostream& operator<<(std::ostream& out, const wchar_t* wstr) { | 824 std::ostream& operator<<(std::ostream& out, const wchar_t* wstr) { |
| 825 return out << WideToUTF8(std::wstring(wstr)); | 825 return out << WideToUTF8(std::wstring(wstr)); |
| 826 } | 826 } |
| OLD | NEW |