1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "mojo/public/cpp/environment/logging.h" 6 7#include "mojo/public/cpp/environment/environment.h" 8 9namespace mojo { 10namespace internal { 11 12namespace { 13 14// Gets a pointer to the filename portion of |s|. Assumes that the filename 15// follows the last slash or backslash in |s|, or is |s| if no slash or 16// backslash is present. 17// 18// E.g., a pointer to "foo.cc" is returned for the following inputs: "foo.cc", 19// "./foo.cc", ".\foo.cc", "/absolute/path/to/foo.cc", 20// "relative/path/to/foo.cc", "C:\absolute\path\to\foo.cc", etc. 21const char* GetFilename(const char* s) { 22 const char* rv = s; 23 while (*s) { 24 if (*s == '/' || *s == '\\') 25 rv = s + 1; 26 s++; 27 } 28 return rv; 29} 30 31} // namespace 32 33LogMessage::LogMessage(const char* file, int line, MojoLogLevel log_level) 34 : log_level_(log_level) { 35 // Note: Don't include the log level in the message, since that's passed on. 36 stream_ << GetFilename(file) << '(' << line << "): "; 37} 38 39LogMessage::~LogMessage() { 40 Environment::GetDefaultLogger()->LogMessage(log_level_, 41 stream_.str().c_str()); 42} 43 44} // namespace internal 45} // namespace mojo 46