log

Imports

Imports #

"fmt"
"io"
"log/internal"
"os"
"runtime"
"sync"
"sync/atomic"
"time"

Constants & Variables

LUTC const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const LUTC

Ldate const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const Ldate = *ast.BinaryExpr

Llongfile const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const Llongfile

Lmicroseconds const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const Lmicroseconds

Lmsgprefix const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const Lmsgprefix

Lshortfile const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const Lshortfile

LstdFlags const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const LstdFlags = *ast.BinaryExpr

Ltime const #

These flags define which text to prefix to each log entry generated by the [Logger]. Bits are or'ed together to control what's printed. With the exception of the Lmsgprefix flag, there is no control over the order they appear (the order listed here) or the format they present (as described in the comments). The prefix is followed by a colon only when Llongfile or Lshortfile is specified. For example, flags Ldate | Ltime (or LstdFlags) produce, 2009/01/23 01:23:23 message while flags Ldate | Ltime | Lmicroseconds | Llongfile produce, 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

const Ltime

bufferPool var #

var bufferPool = sync.Pool{...}

std var #

var std = *ast.CallExpr

Structs

Logger struct #

A Logger represents an active logging object that generates lines of output to an [io.Writer]. Each logging operation makes a single call to the Writer's Write method. A Logger can be used simultaneously from multiple goroutines; it guarantees to serialize access to the Writer.

type Logger struct {
outMu sync.Mutex
out io.Writer
prefix *ast.IndexExpr
flag atomic.Int32
isDiscard atomic.Bool
}

Functions

Default function #

Default returns the standard logger used by the package-level output functions.

func Default() *Logger

Fatal function #

Fatal is equivalent to [Print] followed by a call to [os.Exit](1).

func Fatal(v ...any)

Fatal method #

Fatal is equivalent to l.Print() followed by a call to [os.Exit](1).

func (l *Logger) Fatal(v ...any)

Fatalf method #

Fatalf is equivalent to l.Printf() followed by a call to [os.Exit](1).

func (l *Logger) Fatalf(format string, v ...any)

Fatalf function #

Fatalf is equivalent to [Printf] followed by a call to [os.Exit](1).

func Fatalf(format string, v ...any)

Fatalln method #

Fatalln is equivalent to l.Println() followed by a call to [os.Exit](1).

func (l *Logger) Fatalln(v ...any)

Fatalln function #

Fatalln is equivalent to [Println] followed by a call to [os.Exit](1).

func Fatalln(v ...any)

Flags method #

Flags returns the output flags for the logger. The flag bits are [Ldate], [Ltime], and so on.

func (l *Logger) Flags() int

Flags function #

Flags returns the output flags for the standard logger. The flag bits are [Ldate], [Ltime], and so on.

func Flags() int

New function #

New creates a new [Logger]. The out variable sets the destination to which log data will be written. The prefix appears at the beginning of each generated log line, or after the log header if the [Lmsgprefix] flag is provided. The flag argument defines the logging properties.

func New(out io.Writer, prefix string, flag int) *Logger

Output method #

Output writes the output for a logging event. The string s contains the text to print after the prefix specified by the flags of the Logger. A newline is appended if the last character of s is not already a newline. Calldepth is used to recover the PC and is provided for generality, although at the moment on all pre-defined paths it will be 2.

func (l *Logger) Output(calldepth int, s string) error

Output function #

Output writes the output for a logging event. The string s contains the text to print after the prefix specified by the flags of the Logger. A newline is appended if the last character of s is not already a newline. Calldepth is the count of the number of frames to skip when computing the file name and line number if [Llongfile] or [Lshortfile] is set; a value of 1 will print the details for the caller of Output.

func Output(calldepth int, s string) error

Panic function #

Panic is equivalent to [Print] followed by a call to panic().

func Panic(v ...any)

Panic method #

Panic is equivalent to l.Print() followed by a call to panic().

func (l *Logger) Panic(v ...any)

Panicf function #

Panicf is equivalent to [Printf] followed by a call to panic().

func Panicf(format string, v ...any)

Panicf method #

Panicf is equivalent to l.Printf() followed by a call to panic().

func (l *Logger) Panicf(format string, v ...any)

Panicln function #

Panicln is equivalent to [Println] followed by a call to panic().

func Panicln(v ...any)

Panicln method #

Panicln is equivalent to l.Println() followed by a call to panic().

func (l *Logger) Panicln(v ...any)

Prefix method #

Prefix returns the output prefix for the logger.

func (l *Logger) Prefix() string

Prefix function #

Prefix returns the output prefix for the standard logger.

func Prefix() string

Print function #

Print calls Output to print to the standard logger. Arguments are handled in the manner of [fmt.Print].

func Print(v ...any)

Print method #

Print calls l.Output to print to the logger. Arguments are handled in the manner of [fmt.Print].

func (l *Logger) Print(v ...any)

Printf method #

Printf calls l.Output to print to the logger. Arguments are handled in the manner of [fmt.Printf].

func (l *Logger) Printf(format string, v ...any)

Printf function #

Printf calls Output to print to the standard logger. Arguments are handled in the manner of [fmt.Printf].

func Printf(format string, v ...any)

Println function #

Println calls Output to print to the standard logger. Arguments are handled in the manner of [fmt.Println].

func Println(v ...any)

Println method #

Println calls l.Output to print to the logger. Arguments are handled in the manner of [fmt.Println].

func (l *Logger) Println(v ...any)

SetFlags function #

SetFlags sets the output flags for the standard logger. The flag bits are [Ldate], [Ltime], and so on.

func SetFlags(flag int)

SetFlags method #

SetFlags sets the output flags for the logger. The flag bits are [Ldate], [Ltime], and so on.

func (l *Logger) SetFlags(flag int)

SetOutput method #

SetOutput sets the output destination for the logger.

func (l *Logger) SetOutput(w io.Writer)

SetOutput function #

SetOutput sets the output destination for the standard logger.

func SetOutput(w io.Writer)

SetPrefix method #

SetPrefix sets the output prefix for the logger.

func (l *Logger) SetPrefix(prefix string)

SetPrefix function #

SetPrefix sets the output prefix for the standard logger.

func SetPrefix(prefix string)

Writer function #

Writer returns the output destination for the standard logger.

func Writer() io.Writer

Writer method #

Writer returns the output destination for the logger.

func (l *Logger) Writer() io.Writer

formatHeader function #

formatHeader writes log header to buf in following order: - l.prefix (if it's not blank and Lmsgprefix is unset), - date and/or time (if corresponding flags are provided), - file and line number (if corresponding flags are provided), - l.prefix (if it's not blank and Lmsgprefix is set).

func formatHeader(buf *[]byte, t time.Time, prefix string, flag int, file string, line int)

getBuffer function #

func getBuffer() *[]byte

init function #

func init()

itoa function #

Cheap integer to fixed-width decimal ASCII. Give a negative width to avoid zero-padding.

func itoa(buf *[]byte, i int, wid int)

output method #

output can take either a calldepth or a pc to get source line information. It uses the pc if it is non-zero.

func (l *Logger) output(pc uintptr, calldepth int, appendOutput func([]byte) []byte) error

putBuffer function #

func putBuffer(p *[]byte)

Generated with Arrow