package logfmt
Import Path
github.com/go-logfmt/logfmt (on go.dev)
Dependency Relation
imports 13 packages, and imported by one package
Involved Source Files
decode.go
Package logfmt implements utilities to marshal and unmarshal data in the
logfmt format. The logfmt format records key/value pairs in a way that
balances readability for humans and simplicity of computer parsing. It is
most commonly used as a more human friendly alternative to JSON for
structured logging.
encode.go
jsonstring.go
Code Examples
package main
import (
"fmt"
"strings"
"github.com/go-logfmt/logfmt"
)
func main() {
in := `
id=1 dur=1.001s
id=1 path=/path/to/file err="file not found"
`
d := logfmt.NewDecoder(strings.NewReader(in))
for d.ScanRecord() {
for d.ScanKeyval() {
fmt.Printf("k: %s v: %s\n", d.Key(), d.Value())
}
fmt.Println()
}
if d.Err() != nil {
panic(d.Err())
}
}
package main
import (
"errors"
"os"
"time"
"github.com/go-logfmt/logfmt"
)
func main() {
check := func(err error) {
if err != nil {
panic(err)
}
}
e := logfmt.NewEncoder(os.Stdout)
check(e.EncodeKeyval("id", 1))
check(e.EncodeKeyval("dur", time.Second+time.Millisecond))
check(e.EndRecord())
check(e.EncodeKeyval("id", 1))
check(e.EncodeKeyval("path", "/path/to/file"))
check(e.EncodeKeyval("err", errors.New("file not found")))
check(e.EndRecord())
}
Package-Level Type Names (total 4)
A Decoder reads and decodes logfmt records from an input stream.
Err returns the first non-EOF error that was encountered by the Scanner.
Key returns the most recent key found by a call to ScanKeyval. The returned
slice may point to internal buffers and is only valid until the next call
to ScanRecord. It does no allocation.
ScanKeyval advances the Decoder to the next key/value pair of the current
record, which can then be retrieved with the Key and Value methods. It
returns false when decoding stops, either by reaching the end of the
current record or an error.
ScanRecord advances the Decoder to the next record, which can then be
parsed with the ScanKeyval method. It returns false when decoding stops,
either by reaching the end of the input or an error. After ScanRecord
returns false, the Err method will return any error that occurred during
decoding, except that if it was io.EOF, Err will return nil.
Value returns the most recent value found by a call to ScanKeyval. The
returned slice may point to internal buffers and is only valid until the
next call to ScanRecord. It does no allocation when the value has no
escape sequences.
func NewDecoder(r io.Reader) *Decoder
func NewDecoderSize(r io.Reader, size int) *Decoder
An Encoder writes logfmt data to an output stream.
EncodeKeyval writes the logfmt encoding of key and value to the stream. A
single space is written before the second and subsequent keys in a record.
Nothing is written if a non-nil error is returned.
EncodeKeyvals writes the logfmt encoding of keyvals to the stream. Keyvals
is a variadic sequence of alternating keys and values. Keys of unsupported
type are skipped along with their corresponding value. Values of
unsupported type or that cause a MarshalerError are replaced by their error
but do not cause EncodeKeyvals to return an error. If a non-nil error is
returned some key/value pairs may not have be written.
EndRecord writes a newline character to the stream and resets the encoder
to the beginning of a new record.
Reset resets the encoder to the beginning of a new record.
func NewEncoder(w io.Writer) *Encoder
Package-Level Functions (total 4)
MarshalKeyvals returns the logfmt encoding of keyvals, a variadic sequence
of alternating keys and values.
NewDecoder returns a new decoder that reads from r.
The decoder introduces its own buffering and may read data from r beyond
the logfmt records requested.
NewDecoderSize returns a new decoder that reads from r.
The decoder introduces its own buffering and may read data from r beyond
the logfmt records requested.
The size argument specifies the size of the initial buffer that the
Decoder will use to read records from r.
If a log line is longer than the size argument, the Decoder will return
a bufio.ErrTooLong error.
NewEncoder returns a new encoder that writes to w.
Package-Level Variables (total 4)
ErrInvalidKey is returned by Marshal functions and Encoder methods if, after
dropping invalid runes, a key is empty.
ErrNilKey is returned by Marshal functions and Encoder methods if a key is
a nil interface or pointer value.
ErrUnsupportedKeyType is returned by Encoder methods if a key has an
unsupported type.
ErrUnsupportedValueType is returned by Encoder methods if a value has an
unsupported type.
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |