imported logging module
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
module git.haelnorr.com/haelnorr/golibh/logger
|
module git.haelnorr.com/haelnorr/golibh/logger
|
||||||
|
|
||||||
go 1.25.5
|
go 1.25.5
|
||||||
|
|
||||||
|
require github.com/rs/zerolog v1.34.0
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
golang.org/x/sys v0.12.0 // indirect
|
||||||
|
)
|
||||||
|
|||||||
16
logger/go.sum
Normal file
16
logger/go.sum
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||||
|
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
|
||||||
|
github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY=
|
||||||
|
github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ=
|
||||||
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||||
|
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
84
logger/logger.go
Normal file
84
logger/logger.go
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
package logging
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
"github.com/rs/zerolog"
|
||||||
|
"github.com/rs/zerolog/pkgerrors"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Takes a log level as string and converts it to a zerolog.Level interface.
|
||||||
|
// If the string is not a valid input it will return zerolog.InfoLevel
|
||||||
|
func GetLogLevel(level string) zerolog.Level {
|
||||||
|
levels := map[string]zerolog.Level{
|
||||||
|
"trace": zerolog.TraceLevel,
|
||||||
|
"debug": zerolog.DebugLevel,
|
||||||
|
"info": zerolog.InfoLevel,
|
||||||
|
"warn": zerolog.WarnLevel,
|
||||||
|
"error": zerolog.ErrorLevel,
|
||||||
|
"fatal": zerolog.FatalLevel,
|
||||||
|
"panic": zerolog.PanicLevel,
|
||||||
|
}
|
||||||
|
logLevel, valid := levels[level]
|
||||||
|
if !valid {
|
||||||
|
return zerolog.InfoLevel
|
||||||
|
}
|
||||||
|
return logLevel
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns a pointer to a new log file with the specified path.
|
||||||
|
// Remember to call file.Close() when finished writing to the log file
|
||||||
|
func GetLogFile(path string) (*os.File, error) {
|
||||||
|
logPath := filepath.Join(path, "server.log")
|
||||||
|
file, err := os.OpenFile(
|
||||||
|
logPath,
|
||||||
|
os.O_APPEND|os.O_CREATE|os.O_WRONLY,
|
||||||
|
0663,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "os.OpenFile")
|
||||||
|
}
|
||||||
|
return file, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get a pointer to a new zerolog.Logger with the specified level and output
|
||||||
|
// Can provide a file, writer or both. Must provide at least one of the two
|
||||||
|
func GetLogger(
|
||||||
|
logLevel zerolog.Level,
|
||||||
|
w io.Writer,
|
||||||
|
logFile *os.File,
|
||||||
|
logDir string,
|
||||||
|
) (*zerolog.Logger, error) {
|
||||||
|
if w == nil && logFile == nil {
|
||||||
|
return nil, errors.New("No Writer provided for log output.")
|
||||||
|
}
|
||||||
|
|
||||||
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
||||||
|
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
|
||||||
|
|
||||||
|
var consoleWriter zerolog.ConsoleWriter
|
||||||
|
if w != nil {
|
||||||
|
consoleWriter = zerolog.ConsoleWriter{Out: w}
|
||||||
|
}
|
||||||
|
|
||||||
|
var output io.Writer
|
||||||
|
if logFile != nil {
|
||||||
|
if w != nil {
|
||||||
|
output = zerolog.MultiLevelWriter(logFile, consoleWriter)
|
||||||
|
} else {
|
||||||
|
output = logFile
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
output = consoleWriter
|
||||||
|
}
|
||||||
|
logger := zerolog.New(output).
|
||||||
|
With().
|
||||||
|
Timestamp().
|
||||||
|
Logger().
|
||||||
|
Level(logLevel)
|
||||||
|
|
||||||
|
return &logger, nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user