diff options
Diffstat (limited to 'ipc/chromium/src/base/logging.cc')
-rw-r--r-- | ipc/chromium/src/base/logging.cc | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/ipc/chromium/src/base/logging.cc b/ipc/chromium/src/base/logging.cc new file mode 100644 index 000000000..d793990de --- /dev/null +++ b/ipc/chromium/src/base/logging.cc @@ -0,0 +1,99 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/logging.h" +#include "prmem.h" +#include "prprf.h" +#include "base/string_util.h" +#include "nsXPCOM.h" + +namespace mozilla { + +Logger::~Logger() +{ + LogLevel prlevel = LogLevel::Debug; + int xpcomlevel = -1; + + switch (mSeverity) { + case LOG_INFO: + prlevel = LogLevel::Debug; + xpcomlevel = -1; + break; + + case LOG_WARNING: + prlevel = LogLevel::Warning; + xpcomlevel = NS_DEBUG_WARNING; + break; + + case LOG_ERROR: + prlevel = LogLevel::Error; + xpcomlevel = NS_DEBUG_WARNING; + break; + + case LOG_ERROR_REPORT: + prlevel = LogLevel::Error; + xpcomlevel = NS_DEBUG_ASSERTION; + break; + + case LOG_FATAL: + prlevel = LogLevel::Error; + xpcomlevel = NS_DEBUG_ABORT; + break; + } + + MOZ_LOG(gChromiumPRLog, prlevel, ("%s:%i: %s", mFile, mLine, mMsg ? mMsg : "<no message>")); + if (xpcomlevel != -1) + NS_DebugBreak(xpcomlevel, mMsg, NULL, mFile, mLine); + + PR_Free(mMsg); +} + +void +Logger::printf(const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + mMsg = PR_vsprintf_append(mMsg, fmt, args); + va_end(args); +} + +LazyLogModule Logger::gChromiumPRLog("chromium"); +} // namespace mozilla + +mozilla::Logger& +operator<<(mozilla::Logger& log, const char* s) +{ + log.printf("%s", s); + return log; +} + +mozilla::Logger& +operator<<(mozilla::Logger& log, const std::string& s) +{ + log.printf("%s", s.c_str()); + return log; +} + +mozilla::Logger& +operator<<(mozilla::Logger& log, int i) +{ + log.printf("%i", i); + return log; +} + +mozilla::Logger& +operator<<(mozilla::Logger& log, const std::wstring& s) +{ + log.printf("%s", WideToASCII(s).c_str()); + return log; +} + +mozilla::Logger& +operator<<(mozilla::Logger& log, void* p) +{ + log.printf("%p", p); + return log; +} |