Package log4go provides level-based and highly configurable logging.
This is inspired by the logging functionality in Java. Essentially, you create a Logger object and create output filters for it. You can send whatever you want to the Logger, and it will filter that based on your settings and send it to the outputs. This way, you can put as much debug code in your program as you want, and when you're done you can filter out the mundane messages so only the important ones show up.
Utility functions are provided to make life easier. Here is some example code to get started:
log := log4go.NewLogger() log.AddFilter("stdout", log4go.DEBUG, log4go.NewConsoleLogWriter()) log.AddFilter("log", log4go.FINE, log4go.NewFileLogWriter("example.log", true)) log.Info("The time is now: %s", time.LocalTime().Format("15:04:05 MST 2006/01/02"))
The first two lines can be combined with the utility NewDefaultLogger:
log := log4go.NewDefaultLogger(log4go.DEBUG) log.AddFilter("log", log4go.FINE, log4go.NewFileLogWriter("example.log", true)) log.Info("The time is now: %s", time.LocalTime().Format("15:04:05 MST 2006/01/02"))
Usage notes: - The ConsoleLogWriter does not display the source of the message to standard
output, but the FileLogWriter does.
- The utility functions (Info, Debug, Warn, etc) derive their source from the
calling function, and this incurs extra overhead.
Changes from 2.0: - The external interface has remained mostly stable, but a lot of the
internals have been changed, so if you depended on any of this or created your own LogWriter, then you will probably have to update your code. In particular, Logger is now a map and ConsoleLogWriter is now a channel behind-the-scenes, and the LogWrite method no longer has return values.
Future work: (please let me know if you think I should work on any of these particularly) - Log file rotation - Logging configuration files ala log4j - Have the ability to remove filters? - Have GetInfoChannel, GetDebugChannel, etc return a chan string that allows
for another method of logging
- Add an XML filter type