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 9 namespace mojo { 10 namespace internal { 11 12 namespace { 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. 21 const 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 33 LogMessage::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 39 LogMessage::~LogMessage() { 40 Environment::GetDefaultLogger()->LogMessage(log_level_, 41 stream_.str().c_str()); 42 } 43 44 } // namespace internal 45 } // namespace mojo 46