github.com/pdfcpu/pdfcpu@v0.11.1/pkg/log/log.go (about) 1 /* 2 Copyright 2018 The pdfcpu Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 // Package log provides a logging abstraction. 18 package log 19 20 import ( 21 "log" 22 "os" 23 ) 24 25 // Logger defines an interface for logging messages. 26 type Logger interface { 27 28 // Printf logs a formatted string. 29 Printf(format string, args ...interface{}) 30 31 // Println logs a line. 32 Println(args ...interface{}) 33 34 // Fatalf is equivalent to Printf() followed by a program abort. 35 Fatalf(format string, args ...interface{}) 36 37 // Fatalln is equivalent to Println() followed by a progam abort. 38 Fatalln(args ...interface{}) 39 } 40 41 type logger struct { 42 log Logger 43 } 44 45 // pdfcpu's loggers. 46 var ( 47 48 // Horizontal loggers 49 Debug = &logger{} 50 Info = &logger{} 51 Stats = &logger{} 52 Trace = &logger{} 53 54 // Vertical loggers 55 Parse = &logger{} 56 Read = &logger{} 57 Validate = &logger{} 58 Optimize = &logger{} 59 Write = &logger{} 60 CLI = &logger{} 61 ) 62 63 // SetDebugLogger sets the debug logger. 64 func SetDebugLogger(log Logger) { 65 Debug.log = log 66 } 67 68 // SetInfoLogger sets the info logger. 69 func SetInfoLogger(log Logger) { 70 Info.log = log 71 } 72 73 // SetStatsLogger sets the stats logger. 74 func SetStatsLogger(log Logger) { 75 Stats.log = log 76 } 77 78 // SetTraceLogger sets the trace logger. 79 func SetTraceLogger(log Logger) { 80 Trace.log = log 81 } 82 83 // SetParseLogger sets the parse logger. 84 func SetParseLogger(log Logger) { 85 Parse.log = log 86 } 87 88 // SetReadLogger sets the read logger. 89 func SetReadLogger(log Logger) { 90 Read.log = log 91 } 92 93 // SetValidateLogger sets the validate logger. 94 func SetValidateLogger(log Logger) { 95 Validate.log = log 96 } 97 98 // SetOptimizeLogger sets the optimize logger. 99 func SetOptimizeLogger(log Logger) { 100 Optimize.log = log 101 } 102 103 // SetWriteLogger sets the write logger. 104 func SetWriteLogger(log Logger) { 105 Write.log = log 106 } 107 108 // SetCLILogger sets the api logger. 109 func SetCLILogger(log Logger) { 110 CLI.log = log 111 } 112 113 // SetDefaultDebugLogger sets the default debug logger. 114 func SetDefaultDebugLogger() { 115 SetDebugLogger(log.New(os.Stderr, "DEBUG: ", log.Ldate|log.Ltime)) 116 } 117 118 // SetDefaultInfoLogger sets the default info logger. 119 func SetDefaultInfoLogger() { 120 SetInfoLogger(log.New(os.Stderr, " INFO: ", log.Ldate|log.Ltime)) 121 } 122 123 // SetDefaultStatsLogger sets the default stats logger. 124 func SetDefaultStatsLogger() { 125 SetStatsLogger(log.New(os.Stderr, "STATS: ", log.Ldate|log.Ltime)) 126 } 127 128 // SetDefaultTraceLogger sets the default trace logger. 129 func SetDefaultTraceLogger() { 130 SetTraceLogger(log.New(os.Stderr, "TRACE: ", log.Ldate|log.Ltime)) 131 } 132 133 // SetDefaultParseLogger sets the default parse logger. 134 func SetDefaultParseLogger() { 135 SetParseLogger(log.New(os.Stderr, "PARSE: ", log.Ldate|log.Ltime)) 136 } 137 138 // SetDefaultReadLogger sets the default read logger. 139 func SetDefaultReadLogger() { 140 SetReadLogger(log.New(os.Stderr, " READ: ", log.Ldate|log.Ltime)) 141 } 142 143 // SetDefaultValidateLogger sets the default validate logger. 144 func SetDefaultValidateLogger() { 145 SetValidateLogger(log.New(os.Stderr, "VALID: ", log.Ldate|log.Ltime)) 146 } 147 148 // SetDefaultOptimizeLogger sets the default optimize logger. 149 func SetDefaultOptimizeLogger() { 150 SetOptimizeLogger(log.New(os.Stderr, " OPT: ", log.Ldate|log.Ltime)) 151 } 152 153 // SetDefaultWriteLogger sets the default write logger. 154 func SetDefaultWriteLogger() { 155 SetWriteLogger(log.New(os.Stderr, "WRITE: ", log.Ldate|log.Ltime)) 156 } 157 158 // SetDefaultCLILogger sets the default cli logger. 159 func SetDefaultCLILogger() { 160 SetCLILogger(log.New(os.Stdout, "", 0)) 161 } 162 163 // SetDefaultLoggers sets all loggers to their default logger. 164 func SetDefaultLoggers() { 165 SetDefaultDebugLogger() 166 SetDefaultInfoLogger() 167 SetDefaultStatsLogger() 168 SetDefaultTraceLogger() 169 SetDefaultParseLogger() 170 SetDefaultReadLogger() 171 SetDefaultValidateLogger() 172 SetDefaultOptimizeLogger() 173 SetDefaultWriteLogger() 174 SetDefaultCLILogger() 175 } 176 177 // DisableLoggers turns off all logging. 178 func DisableLoggers() { 179 SetDebugLogger(nil) 180 SetInfoLogger(nil) 181 SetStatsLogger(nil) 182 SetTraceLogger(nil) 183 SetParseLogger(nil) 184 SetReadLogger(nil) 185 SetValidateLogger(nil) 186 SetOptimizeLogger(nil) 187 SetWriteLogger(nil) 188 SetCLILogger(nil) 189 } 190 191 // CLIEnabled returns true if the CLI Logger is enabled. 192 func CLIEnabled() bool { 193 return CLI.log != nil 194 } 195 196 // DebugEnabled returns true if the Debug Logger is enabled. 197 func DebugEnabled() bool { 198 return Debug.log != nil 199 } 200 201 // InfoEnabled returns true if the Info Logger is enabled. 202 func InfoEnabled() bool { 203 return Info.log != nil 204 } 205 206 // OptimizeEnabled returns true if the Optimize Logger is enabled. 207 func OptimizeEnabled() bool { 208 return Optimize.log != nil 209 } 210 211 // ParseEnabled returns true if the Parse Logger is enabled. 212 func ParseEnabled() bool { 213 return Parse.log != nil 214 } 215 216 // ReadEnabled returns true if the Read Logger is enabled. 217 func ReadEnabled() bool { 218 return Read.log != nil 219 } 220 221 // StatsEnabled returns true if the Read Logger is enabled. 222 func StatsEnabled() bool { 223 return Stats.log != nil 224 } 225 226 // TraceEnabled returns true if the Trace Logger is enabled. 227 func TraceEnabled() bool { 228 return Trace.log != nil 229 } 230 231 // ValidateEnabled returns true if the Validate Logger is enabled. 232 func ValidateEnabled() bool { 233 return Validate.log != nil 234 } 235 236 // WriteEnabled returns true if the Write Logger is enabled. 237 func WriteEnabled() bool { 238 return Write.log != nil 239 } 240 241 // Printf writes a formatted message to the log. 242 func (l *logger) Printf(format string, args ...interface{}) { 243 244 if l.log == nil { 245 return 246 } 247 248 l.log.Printf(format, args...) 249 } 250 251 // Println writes a line to the log. 252 func (l *logger) Println(args ...interface{}) { 253 254 if l.log == nil { 255 return 256 } 257 258 l.log.Println(args...) 259 } 260 261 // Fatalf is equivalent to Printf() followed by a program abort. 262 func (l *logger) Fatalf(format string, args ...interface{}) { 263 264 if l.log == nil { 265 return 266 } 267 268 l.log.Fatalf(format, args...) 269 } 270 271 // Fatalf is equivalent to Println() followed by a program abort. 272 func (l *logger) Fatalln(args ...interface{}) { 273 274 if l.log == nil { 275 return 276 } 277 278 l.log.Fatalln(args...) 279 }