You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I developed a C++ service that uses Abseil logging and I could not figure out why my log messages with INFO severity did not appear in the Linux systemd journal. I reviewed https://abseil.io/docs/cpp/guides/logging and its information about log severity, and I tried defining ABSL_MIN_LOG_LEVEL to 0, but it did not help.
I had previously added a call to absl::InitializeLog() (which is not explained in that docs page) in order to eliminate this warning from my server's output: WARNING: All log messages before absl::InitializeLog() is called are written to STDERR. I eventually figured out to my dismay that removing this call to InitializeLog() was all I needed to fix my problem: INFO log messages now appeared in the journal output.
I eventually stumbled upon an example that showed me how to properly initialize Abseil logging by calling absl::SetStderrThreshold() in addition to InitializeLog(). That led me to globals.h which also explains that --minloglevel can be used to control this behavior.
I feel misled since Abseil told me to call InitializeLog(), but it didn't tell me that I might also need to call SetStderrThreshold(). I did the right thing and read the documentation, but none of InitializeLog(), SetStderrThreshold() or --minloglevel are mentioned at all at https://abseil.io/docs/cpp/guides/logging. It would be great if this documentation could be improved, it would have saved me quite a bit of troubleshooting.
Steps to reproduce the problem
Write a C++ service with a main that begins with:
int main(int argc, char **argv) {
absl::InitializeLog();
absl::ParseCommandLine(argc, argv);
Add some LOG(INFO) and LOG(ERROR) messages in the service. Build it and register the service with systemd on a Linux system. Start the service then run journalctl -u <service-name>. Observe that the log messages with INFO severity do not appear in the journal, but the messages with ERROR severity do.
Add a call to absl::SetStderrThreshold(absl::LogSeverityAtLeast::kInfo); at the start of main(), rebuild and restart the service and observe that now INFO log messages appear in the journal.
Describe the issue
I developed a C++ service that uses Abseil logging and I could not figure out why my log messages with INFO severity did not appear in the Linux systemd journal. I reviewed https://abseil.io/docs/cpp/guides/logging and its information about log severity, and I tried defining ABSL_MIN_LOG_LEVEL to 0, but it did not help.
I had previously added a call to
absl::InitializeLog()
(which is not explained in that docs page) in order to eliminate this warning from my server's output:WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
. I eventually figured out to my dismay that removing this call toInitializeLog()
was all I needed to fix my problem: INFO log messages now appeared in the journal output.I eventually stumbled upon an example that showed me how to properly initialize Abseil logging by calling
absl::SetStderrThreshold()
in addition toInitializeLog()
. That led me to globals.h which also explains that--minloglevel
can be used to control this behavior.I feel misled since Abseil told me to call
InitializeLog()
, but it didn't tell me that I might also need to callSetStderrThreshold()
. I did the right thing and read the documentation, but none ofInitializeLog()
,SetStderrThreshold()
or--minloglevel
are mentioned at all at https://abseil.io/docs/cpp/guides/logging. It would be great if this documentation could be improved, it would have saved me quite a bit of troubleshooting.Steps to reproduce the problem
Write a C++ service with a main that begins with:
Add some
LOG(INFO)
andLOG(ERROR)
messages in the service. Build it and register the service with systemd on a Linux system. Start the service then runjournalctl -u <service-name>
. Observe that the log messages with INFO severity do not appear in the journal, but the messages with ERROR severity do.Add a call to
absl::SetStderrThreshold(absl::LogSeverityAtLeast::kInfo);
at the start ofmain()
, rebuild and restart the service and observe that now INFO log messages appear in the journal.What version of Abseil are you using?
https://github.com/abseil/abseil-cpp/archive/1adf896ec842bd9788a1bbede94a33e1402b8ecb.tar.gz
What operating system and version are you using?
Linux ARM64
What compiler and version are you using?
gcc
What build system are you using?
Bazel 6.0.0
Additional context
No response
The text was updated successfully, but these errors were encountered: