Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
4 : // Use of this source code is governed by a BSD-style license that can be
5 : // found in the LICENSE file.
6 :
7 : #include "base/logging.h"
8 : #include "base/string_util.h"
9 : #include "nsXPCOM.h"
10 : #include "mozilla/Move.h"
11 :
12 : namespace mozilla {
13 :
14 0 : Logger::~Logger()
15 : {
16 0 : LogLevel prlevel = LogLevel::Debug;
17 0 : int xpcomlevel = -1;
18 :
19 0 : switch (mSeverity) {
20 : case LOG_INFO:
21 0 : prlevel = LogLevel::Debug;
22 0 : xpcomlevel = -1;
23 0 : break;
24 :
25 : case LOG_WARNING:
26 0 : prlevel = LogLevel::Warning;
27 0 : xpcomlevel = NS_DEBUG_WARNING;
28 0 : break;
29 :
30 : case LOG_ERROR:
31 0 : prlevel = LogLevel::Error;
32 0 : xpcomlevel = NS_DEBUG_WARNING;
33 0 : break;
34 :
35 : case LOG_ERROR_REPORT:
36 0 : prlevel = LogLevel::Error;
37 0 : xpcomlevel = NS_DEBUG_ASSERTION;
38 0 : break;
39 :
40 : case LOG_FATAL:
41 0 : prlevel = LogLevel::Error;
42 0 : xpcomlevel = NS_DEBUG_ABORT;
43 0 : break;
44 : }
45 :
46 0 : MOZ_LOG(gChromiumPRLog, prlevel, ("%s:%i: %s", mFile, mLine, mMsg ? mMsg.get() : "<no message>"));
47 0 : if (xpcomlevel != -1)
48 0 : NS_DebugBreak(xpcomlevel, mMsg.get(), NULL, mFile, mLine);
49 0 : }
50 :
51 : void
52 0 : Logger::printf(const char* fmt, ...)
53 : {
54 : va_list args;
55 0 : va_start(args, fmt);
56 0 : mMsg = mozilla::VsmprintfAppend(mozilla::Move(mMsg), fmt, args);
57 0 : va_end(args);
58 0 : }
59 :
60 : LazyLogModule Logger::gChromiumPRLog("chromium");
61 :
62 : mozilla::Logger&
63 0 : operator<<(mozilla::Logger& log, const char* s)
64 : {
65 0 : log.printf("%s", s);
66 0 : return log;
67 : }
68 :
69 : mozilla::Logger&
70 0 : operator<<(mozilla::Logger& log, const std::string& s)
71 : {
72 0 : log.printf("%s", s.c_str());
73 0 : return log;
74 : }
75 :
76 : mozilla::Logger&
77 0 : operator<<(mozilla::Logger& log, int i)
78 : {
79 0 : log.printf("%i", i);
80 0 : return log;
81 : }
82 :
83 : mozilla::Logger&
84 0 : operator<<(mozilla::Logger& log, const std::wstring& s)
85 : {
86 0 : log.printf("%s", WideToASCII(s).c_str());
87 0 : return log;
88 : }
89 :
90 : mozilla::Logger&
91 0 : operator<<(mozilla::Logger& log, void* p)
92 : {
93 0 : log.printf("%p", p);
94 0 : return log;
95 : }
96 :
97 : } // namespace mozilla
|