-
Notifications
You must be signed in to change notification settings - Fork 499
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Send standard logger's output to logrus #1912
Conversation
If maintainers would rather I figure out how to pass this down through the call chain to the sumdb |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO, global loggers are not great, but given the cost (A go routine to mimic an io.Writer seems a little insane), this might be OK in this case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
cmd/proxy/main.go
Outdated
{ | ||
logrusWriter := logger.WriterLevel(logrus.ErrorLevel) | ||
defer func() { | ||
if err := logrusWriter.Close(); err != nil { | ||
logger.WithError(err).Warn("Could not close logrus writer pipe") | ||
} | ||
}() | ||
stdlog.SetOutput(logrusWriter) | ||
stdlog.SetFlags(stdlog.Flags() &^ (stdlog.Ldate | stdlog.Ltime)) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Scoping the variables here seems unnecessary, unless I am missing something that isn't described by the comment.
{ | |
logrusWriter := logger.WriterLevel(logrus.ErrorLevel) | |
defer func() { | |
if err := logrusWriter.Close(); err != nil { | |
logger.WithError(err).Warn("Could not close logrus writer pipe") | |
} | |
}() | |
stdlog.SetOutput(logrusWriter) | |
stdlog.SetFlags(stdlog.Flags() &^ (stdlog.Ldate | stdlog.Ltime)) | |
} | |
logrusWriter := logger.WriterLevel(logrus.ErrorLevel) | |
defer func() { | |
if err := logrusWriter.Close(); err != nil { | |
logger.WithError(err).Warn("Could not close logrus writer pipe") | |
} | |
}() | |
stdlog.SetOutput(logrusWriter) | |
stdlog.SetFlags(stdlog.Flags() &^ (stdlog.Ldate | stdlog.Ltime)) |
WDYT of simply removing the scope?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did it just to logically group things together, and also to discourage/prevent using logrusWriter
later on. I'm fine removing it if this feels too awkward/unusual to others.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed scope in 6eea0a6.
cmd/proxy/main.go
Outdated
// logrus.Writer() spawns a go routine, so instead of doing that each time | ||
// we need to make logrus look like a (standard) log.Logger (and then Close()ing it), | ||
// we can do it once in main and have the global log.Logger use it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// logrus.Writer() spawns a go routine, so instead of doing that each time | |
// we need to make logrus look like a (standard) log.Logger (and then Close()ing it), | |
// we can do it once in main and have the global log.Logger use it. | |
// Use the logrus writer as the standard logger's output in order to avoid starting goroutines whenever logrus.Writer() is called. |
WDYT of this simplification of the comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's fair to say that this was too long a comment for code and better off in the PR/commit explanation. I went with something even shorter in 6eea0a6.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gomods/athens](https://togithub.com/gomods/athens) | patch | `v0.13.1` -> `v0.13.3` | --- ### Release Notes <details> <summary>gomods/athens (gomods/athens)</summary> ### [`v0.13.3`](https://togithub.com/gomods/athens/releases/tag/v0.13.3) [Compare Source](https://togithub.com/gomods/athens/compare/v0.13.2...v0.13.3) #### What's Changed - Update README.md by [@​computerscienceiscool](https://togithub.com/computerscienceiscool) in [https://github.com/gomods/athens/pull/1932](https://togithub.com/gomods/athens/pull/1932) - update-go-pkg(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/gomods/athens/pull/1933](https://togithub.com/gomods/athens/pull/1933) - Upgrade logrus from 1.7.0 => 1.9.3 by [@​matt0x6F](https://togithub.com/matt0x6F) in [https://github.com/gomods/athens/pull/1934](https://togithub.com/gomods/athens/pull/1934) - should use errors.AsErr to extract and detect errors.Error by [@​kkHAIKE](https://togithub.com/kkHAIKE) in [https://github.com/gomods/athens/pull/1936](https://togithub.com/gomods/athens/pull/1936) - correcting the misuse of the context in the copyContextWithCustomTime… by [@​kkHAIKE](https://togithub.com/kkHAIKE) in [https://github.com/gomods/athens/pull/1941](https://togithub.com/gomods/athens/pull/1941) - remove hardcoded rootPath values by [@​Jeansen](https://togithub.com/Jeansen) in [https://github.com/gomods/athens/pull/1874](https://togithub.com/gomods/athens/pull/1874) #### New Contributors - [@​computerscienceiscool](https://togithub.com/computerscienceiscool) made their first contribution in [https://github.com/gomods/athens/pull/1932](https://togithub.com/gomods/athens/pull/1932) - [@​kkHAIKE](https://togithub.com/kkHAIKE) made their first contribution in [https://github.com/gomods/athens/pull/1936](https://togithub.com/gomods/athens/pull/1936) - [@​Jeansen](https://togithub.com/Jeansen) made their first contribution in [https://github.com/gomods/athens/pull/1874](https://togithub.com/gomods/athens/pull/1874) **Full Changelog**: gomods/athens@v0.13.2...v0.13.3 ### [`v0.13.2`](https://togithub.com/gomods/athens/releases/tag/v0.13.2) [Compare Source](https://togithub.com/gomods/athens/compare/v0.13.1...v0.13.2) #### What's Changed - Send standard logger's output to logrus by [@​mikesep](https://togithub.com/mikesep) in [https://github.com/gomods/athens/pull/1912](https://togithub.com/gomods/athens/pull/1912) - chore: fix broken links to 'absolutely everybody' blog post by [@​darrylblake](https://togithub.com/darrylblake) in [https://github.com/gomods/athens/pull/1914](https://togithub.com/gomods/athens/pull/1914) - update-github-action(deps): bump golangci/golangci-lint-action from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/gomods/athens/pull/1915](https://togithub.com/gomods/athens/pull/1915) - update-go-pkg(deps): bump github.com/gorilla/mux from 1.6.2 to 1.8.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/gomods/athens/pull/1917](https://togithub.com/gomods/athens/pull/1917) - update-go-pkg(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/gomods/athens/pull/1918](https://togithub.com/gomods/athens/pull/1918) - update-go-pkg(deps): bump go.etcd.io/etcd/api/v3 from 3.5.9 to 3.5.12 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/gomods/athens/pull/1919](https://togithub.com/gomods/athens/pull/1919) - Fix Markdown link in Storage docs by [@​chriskuehl](https://togithub.com/chriskuehl) in [https://github.com/gomods/athens/pull/1922](https://togithub.com/gomods/athens/pull/1922) - Use quotes for args by [@​matt0x6F](https://togithub.com/matt0x6F) in [https://github.com/gomods/athens/pull/1925](https://togithub.com/gomods/athens/pull/1925) - Add log formatting settings by [@​matt0x6F](https://togithub.com/matt0x6F) in [https://github.com/gomods/athens/pull/1926](https://togithub.com/gomods/athens/pull/1926) - upgrade mongodb driver by [@​xytan0056](https://togithub.com/xytan0056) in [https://github.com/gomods/athens/pull/1928](https://togithub.com/gomods/athens/pull/1928) - update-go-pkg(deps): bump github.com/lib/pq from 1.10.7 to 1.10.9 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/gomods/athens/pull/1923](https://togithub.com/gomods/athens/pull/1923) - Rework logging defaults by [@​matt0x6F](https://togithub.com/matt0x6F) in [https://github.com/gomods/athens/pull/1927](https://togithub.com/gomods/athens/pull/1927) #### New Contributors - [@​darrylblake](https://togithub.com/darrylblake) made their first contribution in [https://github.com/gomods/athens/pull/1914](https://togithub.com/gomods/athens/pull/1914) - [@​chriskuehl](https://togithub.com/chriskuehl) made their first contribution in [https://github.com/gomods/athens/pull/1922](https://togithub.com/gomods/athens/pull/1922) - [@​matt0x6F](https://togithub.com/matt0x6F) made their first contribution in [https://github.com/gomods/athens/pull/1925](https://togithub.com/gomods/athens/pull/1925) **Full Changelog**: gomods/athens@v0.13.1...v0.13.2 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/gomods/athens-charts). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMDEuNCIsInVwZGF0ZWRJblZlciI6IjM3LjMwMS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
What is the problem I am trying to address?
Some packages like
httputil
'sReverseProxy
use the standardlog.Logger
to emit log traces. This means that their output won't match the format of Athens'slogrus
output.How is the fix applied?
logrus.Logger.Writer
's documentation states that it "can be used to override the standard library logger easily." It spawns a go routine, so instead of doing that each time we need to makelogrus
look like a (standard)log.Logger
(and then remembering toClose()
it right away), this callslogrus.Writer()
once inmain
,defer
s theClose()
, and sets it into the globallog.Logger
.What GitHub issue(s) does this PR fix or close?
Related to the work done in #1819 to unify logging.