github.com/Blockdaemon/celo-blockchain@v0.0.0-20200129231733-e667f6b08419/mobile/logger.go (about) 1 // Copyright 2016 The go-ethereum Authors 2 // This file is part of the go-ethereum library. 3 // 4 // The go-ethereum library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-ethereum library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 16 17 package geth 18 19 import ( 20 "github.com/ethereum/go-ethereum/internal/debug" 21 "github.com/ethereum/go-ethereum/log" 22 ) 23 24 // SetVerbosity sets the global verbosity level (between 0 and 6 - see logger/verbosity.go). 25 func SetVerbosity(level int) { 26 handler := debug.CreateStreamHandler("term", "split") 27 log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(level), handler)) 28 } 29 30 // Note: A call to SetVerbosity after a call to SendLogsToFile will disable file logging. 31 // That's just how currently the code is structured. It is not an issue since we are going 32 // to make the calls sequentially at the time of initialization and can choose a particular 33 // order. 34 // Logs will be sent to this file along with the logcat. 35 // format has to be term or json. Anything else will cause the app to panic. 36 func SendLogsToFile(filename string, level int, format string) bool { 37 var consoleFormat log.Format 38 if format == "term" { 39 consoleFormat = log.TerminalFormat(false) 40 } else if format == "json" { 41 consoleFormat = log.JSONFormat() 42 } else { 43 panic("Unexpected format: " + format) 44 } 45 currentHandler := log.Root().GetHandler() 46 fileHandler, err := log.FileHandler(filename, consoleFormat) 47 levelFilterFileHandler := log.LvlFilterHandler(log.Lvl(level), fileHandler) 48 if err != nil { 49 log.Error("SendLogsToFile/Failed to open file " + filename + " for logging") 50 return false 51 } else { 52 if currentHandler == nil { 53 log.Root().SetHandler(levelFilterFileHandler) 54 } else { 55 multiHandler := log.MultiHandler(currentHandler, levelFilterFileHandler) 56 log.Root().SetHandler(multiHandler) 57 } 58 return true 59 } 60 }