sdjournal

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2021 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package sdjournal provides a low-level Go interface to the systemd journal wrapped around the sd-journal C API.

All public read methods map closely to the sd-journal API functions. See the sd-journal.h documentation[1] for information about each function.

To write to the journal, see the pure-Go "journal" package

[1] http://www.freedesktop.org/software/systemd/man/sd-journal.html

Index

Constants

View Source
const (
	SD_JOURNAL_FIELD_SYSTEMD_UNIT = "_SYSTEMD_UNIT"
	SD_JOURNAL_FIELD_MESSAGE      = "MESSAGE"
	SD_JOURNAL_FIELD_PID          = "_PID"
	SD_JOURNAL_FIELD_UID          = "_UID"
	SD_JOURNAL_FIELD_GID          = "_GID"
	SD_JOURNAL_FIELD_HOSTNAME     = "_HOSTNAME"
	SD_JOURNAL_FIELD_MACHINE_ID   = "_MACHINE_ID"
)

Journal entry field strings which correspond to: http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html

View Source
const (
	SD_JOURNAL_NOP        = int(C.SD_JOURNAL_NOP)
	SD_JOURNAL_APPEND     = int(C.SD_JOURNAL_APPEND)
	SD_JOURNAL_INVALIDATE = int(C.SD_JOURNAL_INVALIDATE)
)

Journal event constants

View Source
const (
	// IndefiniteWait is a sentinel value that can be passed to
	// sdjournal.Wait() to signal an indefinite wait for new journal
	// events. It is implemented as the maximum value for a time.Duration:
	// https://github.com/golang/go/blob/e4dcf5c8c22d98ac9eac7b9b226596229624cb1d/src/time/time.go#L434
	IndefiniteWait time.Duration = 1<<63 - 1
)

Variables

View Source
var (
	ErrExpired = errors.New("Timeout expired")
)

Functions

This section is empty.

Types

type Journal

type Journal struct {
	// contains filtered or unexported fields
}

Journal is a Go wrapper of an sd_journal structure.

func NewJournal

func NewJournal() (*Journal, error)

NewJournal returns a new Journal instance pointing to the local journal

func NewJournalFromDir

func NewJournalFromDir(path string) (*Journal, error)

NewJournalFromDir returns a new Journal instance pointing to a journal residing in a given directory. The supplied path may be relative or absolute; if relative, it will be converted to an absolute path before being opened.

func (*Journal) AddConjunction

func (j *Journal) AddConjunction() error

AddConjunction inserts a logical AND in the match list.

func (*Journal) AddDisjunction

func (j *Journal) AddDisjunction() error

AddDisjunction inserts a logical OR in the match list.

func (*Journal) AddMatch

func (j *Journal) AddMatch(match string) error

AddMatch adds a match by which to filter the entries of the journal.

func (*Journal) Close

func (j *Journal) Close() error

Close closes a journal opened with NewJournal.

func (*Journal) FlushMatches

func (j *Journal) FlushMatches()

FlushMatches flushes all matches, disjunctions and conjunctions.

func (*Journal) GetData

func (j *Journal) GetData(field string) (string, error)

GetData gets the data object associated with a specific field from the current journal entry.

func (*Journal) GetDataValue

func (j *Journal) GetDataValue(field string) (string, error)

GetDataValue gets the data object associated with a specific field from the current journal entry, returning only the value of the object.

func (*Journal) GetRealtimeUsec

func (j *Journal) GetRealtimeUsec() (uint64, error)

GetRealtimeUsec gets the realtime (wallclock) timestamp of the current journal entry.

func (*Journal) GetUsage

func (j *Journal) GetUsage() (uint64, error)

GetUsage returns the journal disk space usage, in bytes.

func (*Journal) Next

func (j *Journal) Next() (int, error)

Next advances the read pointer into the journal by one entry.

func (*Journal) NextSkip

func (j *Journal) NextSkip(skip uint64) (uint64, error)

NextSkip advances the read pointer by multiple entries at once, as specified by the skip parameter.

func (*Journal) Previous

func (j *Journal) Previous() (uint64, error)

Previous sets the read pointer into the journal back by one entry.

func (*Journal) PreviousSkip

func (j *Journal) PreviousSkip(skip uint64) (uint64, error)

PreviousSkip sets back the read pointer by multiple entries at once, as specified by the skip parameter.

func (*Journal) SeekRealtimeUsec

func (j *Journal) SeekRealtimeUsec(usec uint64) error

SeekRealtimeUsec seeks to the entry with the specified realtime (wallclock) timestamp, i.e. CLOCK_REALTIME.

func (*Journal) SeekTail

func (j *Journal) SeekTail() error

SeekTail may be used to seek to the end of the journal, i.e. the most recent available entry.

func (*Journal) SetDataThreshold

func (j *Journal) SetDataThreshold(threshold uint64) error

SetDataThresold sets the data field size threshold for data returned by GetData. To retrieve the complete data fields this threshold should be turned off by setting it to 0, so that the library always returns the complete data objects.

func (*Journal) Wait

func (j *Journal) Wait(timeout time.Duration) int

Wait will synchronously wait until the journal gets changed. The maximum time this call sleeps may be controlled with the timeout parameter. If sdjournal.IndefiniteWait is passed as the timeout parameter, Wait will wait indefinitely for a journal change.

type JournalReader

type JournalReader struct {
	// contains filtered or unexported fields
}

JournalReader is an io.ReadCloser which provides a simple interface for iterating through the systemd journal.

func NewJournalReader

func NewJournalReader(config JournalReaderConfig) (*JournalReader, error)

NewJournalReader creates a new JournalReader with configuration options that are similar to the systemd journalctl tool's iteration and filtering features.

func (*JournalReader) Close

func (r *JournalReader) Close() error

func (*JournalReader) Follow

func (r *JournalReader) Follow(until <-chan time.Time, writer io.Writer) (err error)

Follow synchronously follows the JournalReader, writing each new journal entry to writer. The follow will continue until a single time.Time is received on the until channel.

func (*JournalReader) Read

func (r *JournalReader) Read(b []byte) (int, error)

type JournalReaderConfig

type JournalReaderConfig struct {
	// The Since and NumFromTail options are mutually exclusive and determine
	// where the reading begins within the journal.
	Since       time.Duration // start relative to a Duration from now
	NumFromTail uint64        // start relative to the tail

	// Show only journal entries whose fields match the supplied values. If
	// the array is empty, entries will not be filtered.
	Matches []Match

	// If not empty, the journal instance will point to a journal residing
	// in this directory. The supplied path may be relative or absolute.
	Path string
}

JournalReaderConfig represents options to drive the behavior of a JournalReader.

type Match

type Match struct {
	Field string
	Value string
}

Match is a convenience wrapper to describe filters supplied to AddMatch.

func (*Match) String

func (m *Match) String() string

String returns a string representation of a Match suitable for use with AddMatch.

Jump to

Keyboard shortcuts

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