123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- package golog
- import (
- "io"
- "github.com/kataras/pio"
- )
- // NewLine can override the default package-level line breaker, "\n".
- // It should be called (in-sync) before the print or leveled functions.
- //
- // See `github.com/kataras/pio#NewLine` and `Logger#NewLine` too.
- func NewLine(newLineChar string) {
- pio.NewLine = []byte(newLineChar)
- }
- // Default is the package-level ready-to-use logger,
- // level had set to "info", is changeable.
- var Default = New()
- // Reset re-sets the default logger to an empty one.
- func Reset() {
- Default = New()
- }
- // SetOutput overrides the Default Logger's Printer's output with another `io.Writer`.
- func SetOutput(w io.Writer) {
- Default.SetOutput(w)
- }
- // AddOutput adds one or more `io.Writer` to the Default Logger's Printer.
- //
- // If one of the "writers" is not a terminal-based (i.e File)
- // then colors will be disabled for all outputs.
- func AddOutput(writers ...io.Writer) {
- Default.AddOutput(writers...)
- }
- // SetPrefix sets a prefix for the default package-level Logger.
- //
- // The prefix is the first space-separated
- // word that is being presented to the output.
- // It's written even before the log level text.
- //
- // Returns itself.
- func SetPrefix(s string) *Logger {
- return Default.SetPrefix(s)
- }
- // SetTimeFormat sets time format for logs,
- // if "s" is empty then time representation will be off.
- func SetTimeFormat(s string) {
- Default.SetTimeFormat(s)
- }
- // SetLevel accepts a string representation of
- // a `Level` and returns a `Level` value based on that "levelName".
- //
- // Available level names are:
- // "disable"
- // "fatal"
- // "error"
- // "warn"
- // "info"
- // "debug"
- //
- // Alternatively you can use the exported `Default.Level` field, i.e `Default.Level = golog.ErrorLevel`
- func SetLevel(levelName string) {
- Default.SetLevel(levelName)
- }
- // Print prints a log message without levels and colors.
- func Print(v ...interface{}) {
- Default.Print(v...)
- }
- // Println prints a log message without levels and colors.
- // It adds a new line at the end.
- func Println(v ...interface{}) {
- Default.Println(v...)
- }
- // Logf prints a leveled log message to the output.
- // This method can be used to use custom log levels if needed.
- // It adds a new line in the end.
- func Logf(level Level, format string, args ...interface{}) {
- Default.Logf(level, format, args...)
- }
- // Fatal `os.Exit(1)` exit no matter the level of the logger.
- // If the logger's level is fatal, error, warn, info or debug
- // then it will print the log message too.
- func Fatal(v ...interface{}) {
- Default.Fatal(v...)
- }
- // Fatalf will `os.Exit(1)` no matter the level of the logger.
- // If the logger's level is fatal, error, warn, info or debug
- // then it will print the log message too.
- func Fatalf(format string, args ...interface{}) {
- Default.Fatalf(format, args...)
- }
- // Error will print only when logger's Level is error, warn, info or debug.
- func Error(v ...interface{}) {
- Default.Error(v...)
- }
- // Errorf will print only when logger's Level is error, warn, info or debug.
- func Errorf(format string, args ...interface{}) {
- Default.Errorf(format, args...)
- }
- // Warn will print when logger's Level is warn, info or debug.
- func Warn(v ...interface{}) {
- Default.Warn(v...)
- }
- // Warnf will print when logger's Level is warn, info or debug.
- func Warnf(format string, args ...interface{}) {
- Default.Warnf(format, args...)
- }
- // Info will print when logger's Level is info or debug.
- func Info(v ...interface{}) {
- Default.Info(v...)
- }
- // Infof will print when logger's Level is info or debug.
- func Infof(format string, args ...interface{}) {
- Default.Infof(format, args...)
- }
- // Debug will print when logger's Level is debug.
- func Debug(v ...interface{}) {
- Default.Debug(v...)
- }
- // Debugf will print when logger's Level is debug.
- func Debugf(format string, args ...interface{}) {
- Default.Debugf(format, args...)
- }
- // Install receives an external logger
- // and automatically adapts its print functions.
- //
- // Install adds a golog handler to support third-party integrations,
- // it can be used only once per `golog#Logger` instance.
- //
- // For example, if you want to print using a logrus
- // logger you can do the following:
- // `golog.Install(logrus.StandardLogger())`
- //
- // Look `golog#Handle` for more.
- func Install(logger ExternalLogger) {
- Default.Install(logger)
- }
- // InstallStd receives a standard logger
- // and automatically adapts its print functions.
- //
- // Install adds a golog handler to support third-party integrations,
- // it can be used only once per `golog#Logger` instance.
- //
- // Example Code:
- // import "log"
- // myLogger := log.New(os.Stdout, "", 0)
- // InstallStd(myLogger)
- //
- // Look `golog#Handle` for more.
- func InstallStd(logger StdLogger) {
- Default.InstallStd(logger)
- }
- // Handle adds a log handler to the default logger.
- //
- // Handlers can be used to intercept the message between a log value
- // and the actual print operation, it's called
- // when one of the print functions called.
- // If it's return value is true then it means that the specific
- // handler handled the log by itself therefore no need to
- // proceed with the default behavior of printing the log
- // to the specified logger's output.
- //
- // It stops on the handler which returns true firstly.
- // The `Log` value holds the level of the print operation as well.
- func Handle(handler Handler) {
- Default.Handle(handler)
- }
- // Hijack adds a hijacker to the low-level logger's Printer.
- // If you need to implement such as a low-level hijacker manually,
- // then you have to make use of the pio library.
- func Hijack(hijacker func(ctx *pio.Ctx)) {
- Default.Hijack(hijacker)
- }
- // Scan scans everything from "r" and prints
- // its new contents to the logger's Printer's Output,
- // forever or until the returning "cancel" is fired, once.
- func Scan(r io.Reader) (cancel func()) {
- return Default.Scan(r)
- }
- // Child (creates if not exists and) returns a new child
- // Logger based on the default package-level logger instance.
- //
- // Can be used to separate logs by category.
- func Child(name string) *Logger {
- return Default.Child(name)
- }
|