...

Package journal

import "github.com/coreos/go-systemd/v22/journal"
Overview
Index
Examples

Overview ▾

Package journal provides write bindings to the local systemd journal. It is implemented in pure Go and connects to the journal directly over its unix socket.

To read from the journal, see the "sdjournal" package, which wraps the sd-journal a C API.

http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html

Package journal provides write bindings to the local systemd journal. It is implemented in pure Go and connects to the journal directly over its unix socket.

To read from the journal, see the "sdjournal" package, which wraps the sd-journal a C API.

http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html

func Enabled

func Enabled() bool

Enabled checks whether the local systemd journal is available for logging.

func Print

func Print(priority Priority, format string, a ...interface{}) error

Print prints a message to the local systemd journal using Send().

func Send

func Send(message string, priority Priority, vars map[string]string) error

Send a message to the local systemd journal. vars is a map of journald fields to values. Fields must be composed of uppercase letters, numbers, and underscores, but must not start with an underscore. Within these restrictions, any arbitrary field name may be used. Some names have special significance: see the journalctl documentation (http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html) for more details. vars may be nil.

func StderrIsJournalStream

func StderrIsJournalStream() (bool, error)

StderrIsJournalStream returns whether the process stderr is connected to the Journal's stream transport.

This can be used for automatic protocol upgrading described in Journal Native Protocol.

Returns true if JOURNAL_STREAM environment variable is present, and stderr's device and inode numbers match it.

Error is returned if unexpected error occurs: e.g. if JOURNAL_STREAM environment variable is present, but malformed, fstat syscall fails, etc.

Example

Code:

// NOTE: this is just an example. Production code
// will likely use this to setup a logging library
// to write messages to either journal or stderr.
ok, err := journal.StderrIsJournalStream()
if err != nil {
    panic(err)
}

if ok {
    // use journal native protocol
    journal.Send("this is a message logged through the native protocol", journal.PriInfo, nil)
} else {
    // use stderr
    fmt.Fprintln(os.Stderr, "this is a message logged through stderr")
}

func StdoutIsJournalStream

func StdoutIsJournalStream() (bool, error)

StdoutIsJournalStream returns whether the process stdout is connected to the Journal's stream transport.

Returns true if JOURNAL_STREAM environment variable is present, and stdout's device and inode numbers match it.

Error is returned if unexpected error occurs: e.g. if JOURNAL_STREAM environment variable is present, but malformed, fstat syscall fails, etc.

Most users should probably use StderrIsJournalStream.

type Priority

Priority of a journal message

type Priority int
const (
    PriEmerg Priority = iota
    PriAlert
    PriCrit
    PriErr
    PriWarning
    PriNotice
    PriInfo
    PriDebug
)