1// Copyright 2013, Örjan Persson. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package logging 6 7import ( 8 "sync" 9) 10 11// defaultBackend is the backend used for all logging calls. 12var defaultBackend LeveledBackend 13var defaultBackendMutex sync.RWMutex 14 15// Backend is the interface which a log backend need to implement to be able to 16// be used as a logging backend. 17type Backend interface { 18 Log(Level, int, *Record) error 19} 20 21// SetBackend replaces the backend currently set with the given new logging 22// backend. 23func SetBackend(backends ...Backend) LeveledBackend { 24 var backend Backend 25 if len(backends) == 1 { 26 backend = backends[0] 27 } else { 28 backend = MultiLogger(backends...) 29 } 30 31 defaultBackendMutex.Lock() 32 defer defaultBackendMutex.Unlock() 33 defaultBackend = AddModuleLevel(backend) 34 return defaultBackend 35} 36 37// SetLevel sets the logging level for the specified module. The module 38// corresponds to the string specified in GetLogger. 39func SetLevel(level Level, module string) { 40 defaultBackend.SetLevel(level, module) 41} 42 43// GetLevel returns the logging level for the specified module. 44func GetLevel(module string) Level { 45 return defaultBackend.GetLevel(module) 46} 47