Home | History | Annotate | Download | only in lib
      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