journal

package
v22.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2022 License: Apache-2.0 Imports: 14 Imported by: 175

Documentation

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

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

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 added in v22.5.0

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
package main

import (
	"fmt"
	"os"

	"github.com/coreos/go-systemd/v22/journal"
)

func main() {
	// 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")
	}
}
Output:

func StdoutIsJournalStream added in v22.5.0

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.

Types

type Priority

type Priority int

Priority of a journal message

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL