Skip to content

Commit

Permalink
journal: ability to set flags for journal instance
Browse files Browse the repository at this point in the history
  • Loading branch information
taranovegor committed Jun 25, 2024
1 parent 7d375ec commit 16d5271
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
16 changes: 15 additions & 1 deletion sdjournal/journal.go
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,14 @@ const (
SD_JOURNAL_FIELD_CURSOR = "__CURSOR"
SD_JOURNAL_FIELD_REALTIME_TIMESTAMP = "__REALTIME_TIMESTAMP"
SD_JOURNAL_FIELD_MONOTONIC_TIMESTAMP = "__MONOTONIC_TIMESTAMP"

// Journal Flags
SD_JOURNAL_FLAG_LOCAL_ONLY = int(C.SD_JOURNAL_LOCAL_ONLY)
SD_JOURNAL_FLAG_RUNTIME_ONLY = int(C.SD_JOURNAL_RUNTIME_ONLY)
SD_JOURNAL_FLAG_SYSTEM = int(C.SD_JOURNAL_SYSTEM)
SD_JOURNAL_FLAG_CURRENT_USER = int(C.SD_JOURNAL_CURRENT_USER)
SD_JOURNAL_FLAG_ALL_NAMESPACES = int(C.SD_JOURNAL_ALL_NAMESPACES)
SD_JOURNAL_FLAG_INCLUDE_DEFAULT_NAMESPACE = int(C.SD_JOURNAL_INCLUDE_DEFAULT_NAMESPACE)
)

// Journal event constants
Expand Down Expand Up @@ -422,14 +430,20 @@ func (m *Match) String() string {

// NewJournal returns a new Journal instance pointing to the local journal
func NewJournal() (j *Journal, err error) {
return NewJournalWithFlags(SD_JOURNAL_FLAG_LOCAL_ONLY)
}

// NewJournalWithFlags return a new Journal instance pointing to the local journal
// with a list of flags indicating the scope and type of entries that will be accessed.
func NewJournalWithFlags(flags int) (j *Journal, err error) {
j = &Journal{}

sd_journal_open, err := getFunction("sd_journal_open")
if err != nil {
return nil, err
}

r := C.my_sd_journal_open(sd_journal_open, &j.cjournal, C.SD_JOURNAL_LOCAL_ONLY)
r := C.my_sd_journal_open(sd_journal_open, &j.cjournal, C.int(flags))

if r < 0 {
return nil, fmt.Errorf("failed to open journal: %s", syscall.Errno(-r).Error())
Expand Down
11 changes: 11 additions & 0 deletions sdjournal/read.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

package sdjournal

import "C"
import (
"errors"
"fmt"
Expand Down Expand Up @@ -48,6 +49,10 @@ type JournalReaderConfig struct {
// in this directory. The supplied path may be relative or absolute.
Path string

// If not nil, the journal instance will point to a journal with a list
// of flags indicating the scope and type of entries that will be accessed.
Flags []int

// If not nil, Formatter will be used to translate the resulting entries
// into strings. If not set, the default format (timestamp and message field)
// will be used. If Formatter returns an error, Read will stop and return the error.
Expand Down Expand Up @@ -78,6 +83,12 @@ func NewJournalReader(config JournalReaderConfig) (*JournalReader, error) {
var err error
if config.Path != "" {
r.journal, err = NewJournalFromDir(config.Path)
} else if len(config.Flags) > 0 {
flags := config.Flags[0]
for i := 1; i < len(config.Flags); i++ {
flags |= config.Flags[i]
}
r.journal, err = NewJournalWithFlags(flags)
} else {
r.journal, err = NewJournal()
}
Expand Down

0 comments on commit 16d5271

Please sign in to comment.