Comments (7)
My bad, indeed it shouldn't have been 0
. Anyway, since then, the Caller()
method has been added to zerolog to achieve this. Once again though, keep in mind that IIRC, this slows down the logger a great deal.
from zerolog.
Yes, we could add that as optional features. Those are costly operations which IMHO don't add much value.
from zerolog.
@ccll You can add this feature to your logger with a custom hook by using runtime.Caller
, it's pretty straightforward and I don't think it really makes sense to have it as a feature in ZeroLog itself as it's clearly making the logging slower.
If you want advice on how to implement it, I can help.
from zerolog.
@Ullaakut Thanks for the advice, I'll definitely try that.
Closing now.
from zerolog.
@Ullaakut please do post the snip with runtime.Caller
if you would.
from zerolog.
Hi @OptimisticLock. Something like that should work.
type LineInfoHook struct{}
func (h LineInfoHook) Run(e *zerolog.Event, l zerolog.Level, msg string) {
_, file, line, ok := runtime.Caller(0)
if ok {
e.Str("file", file)
e.Int("line", line)
}
}
or if you want it in a single field:
type LineInfoHook struct{}
func (h LineInfoHook) Run(e *zerolog.Event, l zerolog.Level, msg string) {
_, file, line, ok := runtime.Caller(0)
if ok {
e.Str("line", fmt.Sprintf("%s:%d", file, line))
}
}
See https://github.com/rs/zerolog/blob/master/log_example_test.go for examples with hooks.
See the runtime package docs for more info about the Caller
func.
from zerolog.
Hi @OptimisticLock. Something like that should work.
it doesn't work, it prints the like where runtime.Caller(0)
is called inside the hook, not the line where the logging happened
from zerolog.
Related Issues (20)
- feature request: add event Level method for setting the level HOT 1
- Is there a way to obtain the 'buf' from the Event in a hook? HOT 2
- [question] how to rollover log use zerolog and lumberjack ?
- [Question]Error stack with pkgerrors.MarshalStack seems to be too long in some cases
- [QUESTION] Implementation Advise HOT 3
- logger Interface() method cant write map[interface{}]interface{} log
- logger.UpdateContext checks for disabled logger using equality
- Publish a new tag/release each time something is merged to main HOT 1
- UnmarshalKey may return wrong values HOT 2
- Fields with `map[string]string`
- Caller confusion when using caller multiple times HOT 2
- Revert #597 HOT 1
- InterfaceMarshalFunc is not called when encoding JSON HOT 2
- Understanding "Zero Allocation" HOT 1
- Is there a recommended way to do batching of log lines and write at once ? HOT 1
- Logs as bytes in Stderr HOT 6
- Deep Example
- Latest official tagged release not up to date in github? HOT 1
- Add an option to limit max log's size after escaping
- Give debug level logs a color again
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zerolog.