Some parts of mesos use glog before initialization of glog, hence messages via glog might not end up in a logdir:
WARNING: Logging before InitGoogleLogging() is written to STDERR
The solution might be:
cout/cerr should be used before logging initialization.
glog should be used after logging initialization.
Usually, main function has initialization pattern like:
- load = flags.load(argc, argv) // Load flags from command line.
- Check if flags are correct, otherwise print error message to cerr and then exit.
- Check if user passed --help flag to print help message to cout and then exit.
- Parsing and setup of environment variables. If this fails, EXIT macro is used to print error message via glog.
Steps 2 and 3 should use cout/cerr to eliminate any extra information generated by glog like current time, date and log level.
It would be preferable to move step 6 between steps 3 and 4 safely, because logging::initialize() doesn’t depend on process::initialize().
In addition, initialization of glog should be added, where it's necessary.