mirror of
https://github.com/stashapp/stash.git
synced 2025-12-11 02:42:43 +01:00
* Upgrade gqlgen to v0.17.2 This enables builds on Go 1.18. github.com/vektah/gqlparser is upgraded to the newest version too. Getting this to work is a bit of a hazzle. I had to first remove vendoring from the repository, perform the upgrade and then re-introduce the vendor directory. I think gqlgens analysis went wrong for some reason on the upgrade. It would seem a clean-room installation fixed it. * Bump project to 1.18 * Update all packages, address gqlgenc breaking changes * Let `go mod tidy` handle the go.mod file * Upgrade linter to 1.45.2 * Introduce v1.45.2 of the linter The linter now correctly warns on `strings.Title` because it isn't unicode-aware. Fix this by using the suggested fix from x/text/cases to produce unicode-aware strings. The mapping isn't entirely 1-1 as this new approach has a larger iface: it spans all of unicode rather than just ASCII. It coincides for ASCII however, so things should be largely the same. * Ready ourselves for errchkjson and contextcheck. * Revert dockerfile golang version changes for now Co-authored-by: Kermie <kermie@isinthe.house> Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
// +build !windows
|
|
// +build !binary_log
|
|
|
|
package zerolog
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
// See http://cee.mitre.org/language/1.0-beta1/clt.html#syslog
|
|
// or https://www.rsyslog.com/json-elasticsearch/
|
|
const ceePrefix = "@cee:"
|
|
|
|
// SyslogWriter is an interface matching a syslog.Writer struct.
|
|
type SyslogWriter interface {
|
|
io.Writer
|
|
Debug(m string) error
|
|
Info(m string) error
|
|
Warning(m string) error
|
|
Err(m string) error
|
|
Emerg(m string) error
|
|
Crit(m string) error
|
|
}
|
|
|
|
type syslogWriter struct {
|
|
w SyslogWriter
|
|
prefix string
|
|
}
|
|
|
|
// SyslogLevelWriter wraps a SyslogWriter and call the right syslog level
|
|
// method matching the zerolog level.
|
|
func SyslogLevelWriter(w SyslogWriter) LevelWriter {
|
|
return syslogWriter{w, ""}
|
|
}
|
|
|
|
// SyslogCEEWriter wraps a SyslogWriter with a SyslogLevelWriter that adds a
|
|
// MITRE CEE prefix for JSON syslog entries, compatible with rsyslog
|
|
// and syslog-ng JSON logging support.
|
|
// See https://www.rsyslog.com/json-elasticsearch/
|
|
func SyslogCEEWriter(w SyslogWriter) LevelWriter {
|
|
return syslogWriter{w, ceePrefix}
|
|
}
|
|
|
|
func (sw syslogWriter) Write(p []byte) (n int, err error) {
|
|
var pn int
|
|
if sw.prefix != "" {
|
|
pn, err = sw.w.Write([]byte(sw.prefix))
|
|
if err != nil {
|
|
return pn, err
|
|
}
|
|
}
|
|
n, err = sw.w.Write(p)
|
|
return pn + n, err
|
|
}
|
|
|
|
// WriteLevel implements LevelWriter interface.
|
|
func (sw syslogWriter) WriteLevel(level Level, p []byte) (n int, err error) {
|
|
switch level {
|
|
case TraceLevel:
|
|
case DebugLevel:
|
|
err = sw.w.Debug(sw.prefix + string(p))
|
|
case InfoLevel:
|
|
err = sw.w.Info(sw.prefix + string(p))
|
|
case WarnLevel:
|
|
err = sw.w.Warning(sw.prefix + string(p))
|
|
case ErrorLevel:
|
|
err = sw.w.Err(sw.prefix + string(p))
|
|
case FatalLevel:
|
|
err = sw.w.Emerg(sw.prefix + string(p))
|
|
case PanicLevel:
|
|
err = sw.w.Crit(sw.prefix + string(p))
|
|
case NoLevel:
|
|
err = sw.w.Info(sw.prefix + string(p))
|
|
default:
|
|
panic("invalid level")
|
|
}
|
|
// Any CEE prefix is not part of the message, so we don't include its length
|
|
n = len(p)
|
|
return
|
|
}
|