• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
GetFilename(const char * s)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 
LogMessage(const char * file,int line,MojoLogLevel log_level)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 
~LogMessage()39 LogMessage::~LogMessage() {
40   Environment::GetDefaultLogger()->LogMessage(log_level_,
41                                               stream_.str().c_str());
42 }
43 
44 }  // namespace internal
45 }  // namespace mojo
46