mirror of https://github.com/sirupsen/logrus.git
Merge pull request #1372 from tommyblue/syslog_different_loglevels
This commit is contained in:
commit
e59b167d75
|
@ -9,7 +9,7 @@ the last thing you want from your Logging library (again...).
|
|||
|
||||
This does not mean Logrus is dead. Logrus will continue to be maintained for
|
||||
security, (backwards compatible) bug fixes, and performance (where we are
|
||||
limited by the interface).
|
||||
limited by the interface).
|
||||
|
||||
I believe Logrus' biggest contribution is to have played a part in today's
|
||||
widespread use of structured logging in Golang. There doesn't seem to be a
|
||||
|
@ -99,7 +99,7 @@ time="2015-03-26T01:27:38-04:00" level=fatal method=github.com/sirupsen/arcticcr
|
|||
```
|
||||
Note that this does add measurable overhead - the cost will depend on the version of Go, but is
|
||||
between 20 and 40% in recent tests with 1.6 and 1.7. You can validate this in your
|
||||
environment via benchmarks:
|
||||
environment via benchmarks:
|
||||
```
|
||||
go test -bench=.*CallerTracing
|
||||
```
|
||||
|
@ -317,6 +317,8 @@ log.SetLevel(log.InfoLevel)
|
|||
It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose
|
||||
environment if your application has that.
|
||||
|
||||
Note: If you want different log levels for global (`log.SetLevel(...)`) and syslog logging, please check the [syslog hook README](hooks/syslog/README.md#different-log-levels-for-local-and-remote-logging).
|
||||
|
||||
#### Entries
|
||||
|
||||
Besides the fields added with `WithField` or `WithFields` some fields are
|
||||
|
|
|
@ -37,3 +37,45 @@ func main() {
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Different log levels for local and remote logging
|
||||
|
||||
By default `NewSyslogHook()` sends logs through the hook for all log levels. If you want to have
|
||||
different log levels between local logging and syslog logging (i.e. respect the `priority` argument
|
||||
passed to `NewSyslogHook()`), you need to implement the `logrus_syslog.SyslogHook` interface
|
||||
overriding `Levels()` to return only the log levels you're interested on.
|
||||
|
||||
The following example shows how to log at **DEBUG** level for local logging and **WARN** level for
|
||||
syslog logging:
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"log/syslog"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
logrus_syslog "github.com/sirupsen/logrus/hooks/syslog"
|
||||
)
|
||||
|
||||
type customHook struct {
|
||||
*logrus_syslog.SyslogHook
|
||||
}
|
||||
|
||||
func (h *customHook) Levels() []log.Level {
|
||||
return []log.Level{log.WarnLevel}
|
||||
}
|
||||
|
||||
func main() {
|
||||
log.SetLevel(log.DebugLevel)
|
||||
|
||||
hook, err := logrus_syslog.NewSyslogHook("tcp", "localhost:5140", syslog.LOG_WARNING, "myTag")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
log.AddHook(&customHook{hook})
|
||||
|
||||
//...
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue