[Bug]: Make absl::InitializeLog safe to be called multiple times
- Dominant language
- C++
- Stars
- 18.1k
- Forks
- 3.2k
- Avg merge
- 20h 36m
- Merged PRs (30d)
- 1
Description
### Describe the issue
I don't really use `absl::log`, but a library I depend on uses it. It logs a bunch of "garbage" (unrelated to my project) that appears on the stderr. It includes the message:
```
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
```
Now I'm adding an earlier call in my program to `absl::InitializeLog()` in an attempt to eliminate the noise. But I noticed the library I use also eventually calls `absl::InitializeLog()`.
Checking the documentation of `absl::InitializeLog` it's an error to call it more than once.
More generically, a project and one or more of its dependencies may need to call `absl::InitializeLog`, and there is no way to coordinate this across completely independent libraries -- ideally, libraries should never call it but ... it happens -- see [Google's XLA](https://github.com/openxla/xla/blob/6a257dc8805d11c11d25de557dadcb4e248d0849/xla/pjrt/c/pjrt_c_api_gpu.cc#L27C1-L29C1) as an example.
Hence my bug/feature request to make `InitializeLog` safe to be called multiple times -- a no-op if it has already been called.
ps.: I'm no expert on `absl` library, it's very likely there is nuance I'm missing.
### Steps to reproduce the problem
Use two libraries where both call `absl::InitializeLog()`
### What version of Abseil are you using?
Head.
### What operating system and version are you using?
Ubuntu, various versions.
### What compiler and version are you using?
clang
### What build system are you using?
bazel
### Additional context
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.