diff --git a/src/DebugLogger.cc b/src/DebugLogger.cc index 8e964aac32..90babe2358 100644 --- a/src/DebugLogger.cc +++ b/src/DebugLogger.cc @@ -53,21 +53,28 @@ void DebugLogger::OpenDebugLog(const char* filename) { } void DebugLogger::ShowStreamsHelp() { - fprintf(stderr, "\n"); fprintf(stderr, "Enable debug output into debug.log with -B .\n"); - fprintf(stderr, " is a comma-separated list of streams to enable.\n"); + fprintf(stderr, " is a case-insensitive, comma-separated list of streams to enable:\n"); fprintf(stderr, "\n"); - fprintf(stderr, "Available streams:\n"); - for ( int i = 0; i < NUM_DBGS; ++i ) - fprintf(stderr, " %s\n", streams[i].prefix); + std::vector prefixes; + for ( const auto& stream : streams ) + prefixes.emplace_back(stream.prefix); + std::sort(prefixes.begin(), prefixes.end()); + + for ( const auto& prefix : prefixes ) + fprintf(stderr, " %s\n", prefix.c_str()); + + fprintf(stderr, "\n"); + fprintf(stderr, "Every plugin (see -N) also has its own debug stream:\n"); fprintf(stderr, "\n"); fprintf(stderr, " plugin- (replace '::' in name with '-'; e.g., '-B " - "plugin-Zeek-Netmap')\n"); + "plugin-Zeek-JavaScript')\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Pseudo streams:\n"); fprintf(stderr, "\n"); - fprintf(stderr, "Pseudo streams\n"); fprintf(stderr, " verbose Increase verbosity.\n"); fprintf(stderr, " all Enable all streams at maximum verbosity.\n"); fprintf(stderr, "\n"); @@ -79,6 +86,8 @@ void DebugLogger::EnableStreams(const char* s) { char* tok = strtok(tmp, ","); while ( tok ) { + std::string ltok{util::strtolower(tok)}; + if ( strcasecmp("all", tok) == 0 ) { for ( int i = 0; i < NUM_DBGS; ++i ) { streams[i].enabled = true; @@ -99,10 +108,10 @@ void DebugLogger::EnableStreams(const char* s) { exit(0); } - if ( util::starts_with(tok, "plugin-") ) { + if ( util::starts_with(ltok, "plugin-") ) { // Cannot verify this at this time, plugins may not // have been loaded. - enabled_streams.insert(tok); + enabled_streams.insert(ltok); goto next; } @@ -111,7 +120,7 @@ void DebugLogger::EnableStreams(const char* s) { for ( i = 0; i < NUM_DBGS; ++i ) { if ( strcasecmp(streams[i].prefix, tok) == 0 ) { streams[i].enabled = true; - enabled_streams.insert(tok); + enabled_streams.insert(ltok); goto next; } } diff --git a/src/DebugLogger.h b/src/DebugLogger.h index a8df9cd977..bb2c344859 100644 --- a/src/DebugLogger.h +++ b/src/DebugLogger.h @@ -108,7 +108,7 @@ private: static Stream streams[NUM_DBGS]; const std::string PluginStreamName(const std::string& plugin_name) { - return "plugin-" + util::strreplace(plugin_name, "::", "-"); + return "plugin-" + util::strtolower(util::strreplace(plugin_name, "::", "-")); } }; diff --git a/testing/btest/Baseline/plugins.debug-streams/zeek.stderr b/testing/btest/Baseline/plugins.debug-streams/zeek.stderr index 7f6cbf9e04..def86ea9b2 100644 --- a/testing/btest/Baseline/plugins.debug-streams/zeek.stderr +++ b/testing/btest/Baseline/plugins.debug-streams/zeek.stderr @@ -1,2 +1,2 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -error in , line 3: No plugin debug stream 'plugin-zeek-http' found +error in , line 3: No plugin debug stream 'plugin-notaplugin' found diff --git a/testing/btest/plugins/debug-streams.zeek b/testing/btest/plugins/debug-streams.zeek index 795f99b909..b2ce3858e6 100644 --- a/testing/btest/plugins/debug-streams.zeek +++ b/testing/btest/plugins/debug-streams.zeek @@ -2,6 +2,7 @@ # @TEST-REQUIRES: test "$($BUILD/zeek-config --build_type)" = "debug" # @TEST-EXEC: zeek -B plugin-Zeek-HTTP -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr -# @TEST-EXEC-FAIL: zeek -B plugin-zeek-http -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr +# @TEST-EXEC: zeek -B PLUGIN-zeek-http -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr +# @TEST-EXEC-FAIL: zeek -B plugin-notaplugin -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr # @TEST-EXEC: btest-diff zeek.stderr