Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: base/logging.cc

Issue 3575008: Made logging macros evaluate its stream arguments lazily. (Closed) Base URL: http://git.chromium.org/git/chromium.git
Patch Set: Fixed more problems, added more comments/tests Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/logging.h ('k') | base/logging_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 } 554 }
555 if (log_tickcount) 555 if (log_tickcount)
556 stream_ << TickCount() << ':'; 556 stream_ << TickCount() << ':';
557 stream_ << log_severity_names[severity_] << ":" << file << 557 stream_ << log_severity_names[severity_] << ":" << file <<
558 "(" << line << ")] "; 558 "(" << line << ")] ";
559 559
560 message_start_ = stream_.tellp(); 560 message_start_ = stream_.tellp();
561 } 561 }
562 562
563 LogMessage::~LogMessage() { 563 LogMessage::~LogMessage() {
564 // TODO(brettw) modify the macros so that nothing is executed when the log 564 // The macros in logging.h should already avoid creating LogMessages
565 // level is too high. 565 // when this holds, but it's possible that users create LogMessages
566 // directly (e.g., using LOG_STREAM() directly).
566 if (severity_ < min_log_level) 567 if (severity_ < min_log_level)
567 return; 568 return;
568 569
569 #ifndef NDEBUG 570 #ifndef NDEBUG
570 if (severity_ == LOG_FATAL) { 571 if (severity_ == LOG_FATAL) {
571 // Include a stack trace on a fatal. 572 // Include a stack trace on a fatal.
572 StackTrace trace; 573 StackTrace trace;
573 stream_ << std::endl; // Newline to separate from log message. 574 stream_ << std::endl; // Newline to separate from log message.
574 trace.OutputToStream(&stream_); 575 trace.OutputToStream(&stream_);
575 } 576 }
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 783
783 if (level == LOG_FATAL) 784 if (level == LOG_FATAL)
784 DebugUtil::BreakDebugger(); 785 DebugUtil::BreakDebugger();
785 } 786 }
786 787
787 } // namespace logging 788 } // namespace logging
788 789
789 std::ostream& operator<<(std::ostream& out, const wchar_t* wstr) { 790 std::ostream& operator<<(std::ostream& out, const wchar_t* wstr) {
790 return out << WideToUTF8(std::wstring(wstr)); 791 return out << WideToUTF8(std::wstring(wstr));
791 } 792 }
OLDNEW
« no previous file with comments | « base/logging.h ('k') | base/logging_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698