Don't create debug.log immediately upon startup

Instead of creating the debug.log immediately when bro starts,
now it is created only after the debug streams are enabled.
This avoids having an empty log being created when it shouldn't be,
in usages such as "bro -h", "bro -v", or "bro -B help" (and also
when using broctl, which needs to run "bro -v").
This commit is contained in:
Daniel Thayer 2016-06-04 17:16:25 -05:00
parent 8c54f91617
commit 0cae2ca003
3 changed files with 18 additions and 11 deletions

View file

@ -7,7 +7,7 @@
#include "Net.h" #include "Net.h"
#include "plugin/Plugin.h" #include "plugin/Plugin.h"
DebugLogger debug_logger("debug"); DebugLogger debug_logger;
// Same order here as in DebugStream. // Same order here as in DebugStream.
DebugLogger::Stream DebugLogger::streams[NUM_DBGS] = { DebugLogger::Stream DebugLogger::streams[NUM_DBGS] = {
@ -22,7 +22,18 @@ DebugLogger::Stream DebugLogger::streams[NUM_DBGS] = {
{ "pktio", 0, false }, { "broker", 0, false } { "pktio", 0, false }, { "broker", 0, false }
}; };
DebugLogger::DebugLogger(const char* filename) DebugLogger::DebugLogger()
{
verbose = false;
}
DebugLogger::~DebugLogger()
{
if ( file && file != stderr )
fclose(file);
}
void DebugLogger::OpenDebugLog(const char* filename)
{ {
if ( filename ) if ( filename )
{ {
@ -45,14 +56,6 @@ DebugLogger::DebugLogger(const char* filename)
} }
else else
file = stderr; file = stderr;
verbose = false;
}
DebugLogger::~DebugLogger()
{
if ( file != stderr )
fclose(file);
} }
void DebugLogger::ShowStreamsHelp() void DebugLogger::ShowStreamsHelp()

View file

@ -53,9 +53,11 @@ namespace plugin { class Plugin; }
class DebugLogger { class DebugLogger {
public: public:
// Output goes to stderr per default. // Output goes to stderr per default.
DebugLogger(const char* filename = 0); DebugLogger();
~DebugLogger(); ~DebugLogger();
void OpenDebugLog(const char* filename = 0);
void Log(DebugStream stream, const char* fmt, ...); void Log(DebugStream stream, const char* fmt, ...);
void Log(const plugin::Plugin& plugin, const char* fmt, ...); void Log(const plugin::Plugin& plugin, const char* fmt, ...);

View file

@ -755,6 +755,8 @@ int main(int argc, char** argv)
#ifdef DEBUG #ifdef DEBUG
if ( debug_streams ) if ( debug_streams )
debug_logger.EnableStreams(debug_streams); debug_logger.EnableStreams(debug_streams);
debug_logger.OpenDebugLog("debug");
#endif #endif
init_random_seed(seed, (seed_load_file && *seed_load_file ? seed_load_file : 0) , seed_save_file); init_random_seed(seed, (seed_load_file && *seed_load_file ? seed_load_file : 0) , seed_save_file);