mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-11 04:15:54 +02:00
* make it possible to enable json log * fix * fix typo * fix typo * fix typo * fix typo * fix typo * fix typo * Add error handling * Add log_format to default config * Fix syntax error in if statement * Fix typo * Fix typo * Fix some typos and change naming from native to text, makes more sense * Set same timestamp format for json logging * Fix formatting * Move in if statement under previous * Fix some formatting that got messed up * Default to text formatter, if log_format is not configured. * defining logFormatter outside if statement so that log.SetFormatter(logFormatter) is not undefined when function is called * Add variables that were undefined * Argument were missing when calling SetDefaultLoggerConfig function * Fix order of arguments passed * Fix order of arguments passed * Fix typo * Implicit log_format = "text" * functional test * ignore log_format in FatalHook * make it possible to enable json log * fix * fix typo * fix typo * fix typo * fix typo * fix typo * fix typo * Add error handling * Add log_format to default config * Fix syntax error in if statement * Fix typo * Fix typo * Fix some typos and change naming from native to text, makes more sense * Set same timestamp format for json logging * Fix formatting * Move in if statement under previous * Fix some formatting that got messed up * Default to text formatter, if log_format is not configured. * defining logFormatter outside if statement so that log.SetFormatter(logFormatter) is not undefined when function is called * Add variables that were undefined * Argument were missing when calling SetDefaultLoggerConfig function * Fix order of arguments passed * Fix order of arguments passed * Fix typo * Implicit log_format = "text" * functional test * ignore log_format in FatalHook * lint * fix func test * lint * remove < > characters from log --------- Co-authored-by: Victor Edvardsson <victor.edvardsson@loopia.se> Co-authored-by: marco <marco@crowdsec.net> Co-authored-by: Thibault "bui" Koechlin <thibault@crowdsec.net>
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// FatalHook is used to log fatal messages to stderr when the rest goes to a file
|
|
type FatalHook struct {
|
|
Writer io.Writer
|
|
Formatter log.Formatter
|
|
LogLevels []log.Level
|
|
}
|
|
|
|
func newFatalHook() *FatalHook {
|
|
return &FatalHook{
|
|
Writer: os.Stderr,
|
|
Formatter: &log.TextFormatter{
|
|
DisableTimestamp: true,
|
|
// XXX: logrus.TextFormatter has either key pairs with no colors,
|
|
// or "LEVEL [optional timestamp] message", with colors.
|
|
// We force colors to make sure we get the latter, even if
|
|
// the output is not a terminal.
|
|
// There are more flexible formatters that don't conflate the two concepts,
|
|
// or we can write our own.
|
|
ForceColors: true,
|
|
DisableLevelTruncation: true,
|
|
},
|
|
LogLevels: []log.Level{log.FatalLevel, log.PanicLevel},
|
|
}
|
|
}
|
|
|
|
func (hook *FatalHook) Fire(entry *log.Entry) error {
|
|
line, err := hook.Formatter.Format(entry)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = hook.Writer.Write(line)
|
|
|
|
return err
|
|
}
|
|
|
|
func (hook *FatalHook) Levels() []log.Level {
|
|
return hook.LogLevels
|
|
}
|