mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-05-16 15:02:43 +00:00
log: journald integration (#2869)
Provide a bit more journald integration. Specifically: - support emission of printk-style log level prefixes, documented in [`sd-daemon`(3)](https://man7.org/linux/man-pages/man3/sd-daemon.3.html#DESCRIPTION), that allow journald to automatically annotate stderr log lines with their level; - add a new "journaldflags" item that is supposed to be used in place of "stdflags" when under journald to reduce log clutter (i. e. strip date/time info to avoid duplication, and use log level prefixes instead of textual log levels); - detect whether stderr and/or stdout are attached to journald by parsing `$JOURNAL_STREAM` environment variable and adjust console logger defaults accordingly. <!--start release-notes-assistant--> ## Draft release notes <!--URL:https://codeberg.org/forgejo/forgejo--> - Features - [PR](https://codeberg.org/forgejo/forgejo/pulls/2869): <!--number 2869 --><!--line 0 --><!--description bG9nOiBqb3VybmFsZCBpbnRlZ3JhdGlvbg==-->log: journald integration<!--description--> <!--end release-notes-assistant--> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2869 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Ivan Shapovalov <intelfx@intelfx.name> Co-committed-by: Ivan Shapovalov <intelfx@intelfx.name>
This commit is contained in:
parent
a72763f5a3
commit
012a1e0497
9 changed files with 169 additions and 18 deletions
|
@ -133,18 +133,25 @@ func loadLogModeByName(rootCfg ConfigProvider, loggerName, modeName string) (wri
|
|||
writerMode.StacktraceLevel = log.LevelFromString(ConfigInheritedKeyString(sec, "STACKTRACE_LEVEL", Log.StacktraceLogLevel.String()))
|
||||
writerMode.Prefix = ConfigInheritedKeyString(sec, "PREFIX")
|
||||
writerMode.Expression = ConfigInheritedKeyString(sec, "EXPRESSION")
|
||||
writerMode.Flags = log.FlagsFromString(ConfigInheritedKeyString(sec, "FLAGS", defaultFlags))
|
||||
// flags are updated and set below
|
||||
|
||||
switch writerType {
|
||||
case "console":
|
||||
useStderr := ConfigInheritedKey(sec, "STDERR").MustBool(false)
|
||||
// if stderr is on journald, prefer stderr by default
|
||||
useStderr := ConfigInheritedKey(sec, "STDERR").MustBool(log.JournaldOnStderr)
|
||||
defaultCanColor := log.CanColorStdout
|
||||
defaultJournald := log.JournaldOnStdout
|
||||
if useStderr {
|
||||
defaultCanColor = log.CanColorStderr
|
||||
defaultJournald = log.JournaldOnStderr
|
||||
}
|
||||
writerOption := log.WriterConsoleOption{Stderr: useStderr}
|
||||
writerMode.Colorize = ConfigInheritedKey(sec, "COLORIZE").MustBool(defaultCanColor)
|
||||
writerMode.WriterOption = writerOption
|
||||
// if we are ultimately on journald, update default flags
|
||||
if defaultJournald {
|
||||
defaultFlags = "journaldflags"
|
||||
}
|
||||
case "file":
|
||||
fileName := LogPrepareFilenameForWriter(ConfigInheritedKey(sec, "FILE_NAME").String(), defaultFilaName)
|
||||
writerOption := log.WriterFileOption{}
|
||||
|
@ -169,6 +176,9 @@ func loadLogModeByName(rootCfg ConfigProvider, loggerName, modeName string) (wri
|
|||
}
|
||||
}
|
||||
|
||||
// set flags last because the console writer code may update default flags
|
||||
writerMode.Flags = log.FlagsFromString(ConfigInheritedKeyString(sec, "FLAGS", defaultFlags))
|
||||
|
||||
return writerName, writerType, writerMode, nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue