Skip to content

Commit 1953a9e

Browse files
committed
journal: ability to set flags for journal instance
1 parent 7d375ec commit 1953a9e

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

sdjournal/journal.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,14 @@ const (
372372
SD_JOURNAL_FIELD_CURSOR = "__CURSOR"
373373
SD_JOURNAL_FIELD_REALTIME_TIMESTAMP = "__REALTIME_TIMESTAMP"
374374
SD_JOURNAL_FIELD_MONOTONIC_TIMESTAMP = "__MONOTONIC_TIMESTAMP"
375+
376+
// Journal Flags
377+
SD_JOURNAL_FLAG_LOCAL_ONLY = int(C.SD_JOURNAL_LOCAL_ONLY)
378+
SD_JOURNAL_FLAG_RUNTIME_ONLY = int(C.SD_JOURNAL_RUNTIME_ONLY)
379+
SD_JOURNAL_FLAG_SYSTEM = int(C.SD_JOURNAL_SYSTEM)
380+
SD_JOURNAL_FLAG_CURRENT_USER = int(C.SD_JOURNAL_CURRENT_USER)
381+
SD_JOURNAL_FLAG_ALL_NAMESPACES = int(C.SD_JOURNAL_ALL_NAMESPACES)
382+
SD_JOURNAL_FLAG_INCLUDE_DEFAULT_NAMESPACE = int(C.SD_JOURNAL_INCLUDE_DEFAULT_NAMESPACE)
375383
)
376384

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

423431
// NewJournal returns a new Journal instance pointing to the local journal
424432
func NewJournal() (j *Journal, err error) {
433+
return NewJournalWithFlags(SD_JOURNAL_FLAG_LOCAL_ONLY)
434+
}
435+
436+
// NewJournalWithFlags return a new Journal instance pointing to the local journal
437+
// with a list of flags indicating the scope and type of entries that will be accessed.
438+
func NewJournalWithFlags(flags int) (j *Journal, err error) {
425439
j = &Journal{}
426440

427441
sd_journal_open, err := getFunction("sd_journal_open")
428442
if err != nil {
429443
return nil, err
430444
}
431445

432-
r := C.my_sd_journal_open(sd_journal_open, &j.cjournal, C.SD_JOURNAL_LOCAL_ONLY)
446+
r := C.my_sd_journal_open(sd_journal_open, &j.cjournal, C.int(flags))
433447

434448
if r < 0 {
435449
return nil, fmt.Errorf("failed to open journal: %s", syscall.Errno(-r).Error())

sdjournal/read.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ type JournalReaderConfig struct {
4848
// in this directory. The supplied path may be relative or absolute.
4949
Path string
5050

51+
// If not nil, the journal instance will point to a journal with a list
52+
// of flags indicating the scope and type of entries that will be accessed.
53+
Flags []int
54+
5155
// If not nil, Formatter will be used to translate the resulting entries
5256
// into strings. If not set, the default format (timestamp and message field)
5357
// will be used. If Formatter returns an error, Read will stop and return the error.
@@ -78,6 +82,12 @@ func NewJournalReader(config JournalReaderConfig) (*JournalReader, error) {
7882
var err error
7983
if config.Path != "" {
8084
r.journal, err = NewJournalFromDir(config.Path)
85+
} else if len(config.Flags) > 0 {
86+
flags := config.Flags[0]
87+
for i := 1; i < len(config.Flags); i++ {
88+
flags |= config.Flags[i]
89+
}
90+
r.journal, err = NewJournalWithFlags(flags)
8191
} else {
8292
r.journal, err = NewJournal()
8393
}

0 commit comments

Comments
 (0)