| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /* | 5 /* |
| 6 Package logging defines Logger interface with implementations on top of Logrus | 6 Package logging defines Logger interface with implementations on top of |
| 7 library and Appengine context. Unfortunately standard library doesn't define | 7 go-logging library and Appengine context. Unfortunately standard library doesn't |
| 8 any Logger interface (only struct). And even worse: GAE logger is exposing | 8 define any Logger interface (only struct). And even worse: GAE logger is |
| 9 different set of methods. Some additional layer is needed to unify the logging. | 9 exposing different set of methods. Some additional layer is needed to unify |
| 10 the logging. |
| 10 | 11 |
| 11 Package logging is intended to be used from packages that support both local and | 12 Package logging is intended to be used from packages that support both local and |
| 12 GAE environments. Such packages should not use global logger but must accept | 13 GAE environments. Such packages should not use global logger but must accept |
| 13 instances of Logger interface as parameters in functions. Then callers can pass | 14 instances of Logger interface as parameters in functions. Then callers can pass |
| 14 logrus.Logger or appengine.Context depending on where the code is running. | 15 DefaultLogger or appengine.Context depending on where the code is running. |
| 15 | 16 |
| 16 Libraries under infra/libs/* MUST use infra/libs/logger instead of directly | 17 Libraries under infra/libs/* MUST use infra/libs/logger instead of directly |
| 17 calling to Logrus library. | 18 calling to a logging library. |
| 18 */ | 19 */ |
| 19 package logging | 20 package logging |
| 20 | 21 |
| 21 // Logger is interface implemented by both logrus.Logger and appengine.Context, | 22 // Logger is interface implemented by both DefaultLogger and appengine.Context, |
| 22 // and thus it can be used in libraries that expect to be called from both kinds | 23 // and thus it can be used in libraries that expect to be called from both kinds |
| 23 // of environments. | 24 // of environments. |
| 24 type Logger interface { | 25 type Logger interface { |
| 25 // Infof formats its arguments according to the format, analogous to fmt
.Printf, | 26 // Infof formats its arguments according to the format, analogous to fmt
.Printf, |
| 26 // and records the text as a log message at Info level. | 27 // and records the text as a log message at Info level. |
| 27 Infof(format string, args ...interface{}) | 28 Infof(format string, args ...interface{}) |
| 28 | 29 |
| 29 // Warningf is like Infof, but logs at Warning level. | 30 // Warningf is like Infof, but logs at Warning level. |
| 30 Warningf(format string, args ...interface{}) | 31 Warningf(format string, args ...interface{}) |
| 31 | 32 |
| 32 // Errorf is like Infof, but logs at Error level. | 33 // Errorf is like Infof, but logs at Error level. |
| 33 Errorf(format string, args ...interface{}) | 34 Errorf(format string, args ...interface{}) |
| 34 } | 35 } |
| 35 | 36 |
| 36 // DefaultLogger is logger to use if no specialized logger is provided. In local | 37 // DefaultLogger is logger to use if no specialized logger is provided. In local |
| 37 // environment it is Logrus logger, on GAE it is null logger (since GAE logger | 38 // environment it is backed by go-logging, on GAE it is null logger (since GAE |
| 38 // requires active appengine.Context). | 39 // logger requires active appengine.Context). |
| 39 var DefaultLogger Logger | 40 var DefaultLogger Logger |
| 40 | |
| 41 // IsTerminal is true if current process is attached to an interactive terminal. | |
| 42 var IsTerminal bool | |
| 43 | |
| 44 // Infof formats its arguments according to the format, analogous to fmt.Printf, | |
| 45 // and records the text as a log message at Info level. | |
| 46 func Infof(format string, args ...interface{}) { DefaultLogger.Infof(format, arg
s...) } | |
| 47 | |
| 48 // Warningf is like Infof, but logs at Warning level. | |
| 49 func Warningf(format string, args ...interface{}) { DefaultLogger.Warningf(forma
t, args...) } | |
| 50 | |
| 51 // Errorf is like Infof, but logs at Error level. | |
| 52 func Errorf(format string, args ...interface{}) { DefaultLogger.Errorf(format, a
rgs...) } | |
| OLD | NEW |