Add debug log severity for console logger.

Fixes #6276
This commit is contained in:
Michael Friedrich 2014-05-23 11:56:30 +02:00
parent 215f500b0e
commit 5ec300f68e
6 changed files with 53 additions and 10 deletions

View File

@ -830,7 +830,7 @@ for historical reasons.
-D [ --define] args define a constant
-c [ --config ] arg parse a configuration file
-C [ --validate ] exit after validating the configuration
-x [ --debug ] enable debugging
-x [ --debug ] arg enable debugging with optional severity level specified
-d [ --daemonize ] detach from the controlling terminal
-e [ --errorlog ] arg log fatal errors to the specified log file (only works
in combination with --daemonize)

View File

@ -4,12 +4,6 @@ For a more verbose output of the Icinga 2 daemon increase the
`severity` attribute of the [logs](#logging) to `notice` or
`debug`.
Additionally you can enable the debug log using
# icinga2-enable-feature debuglog
# service icinga2 restart
# tail -f /var/log/icinga2/debug.log
## <a id="troubleshooting-information-required"></a> Which information is required
* Which distribution and version
@ -20,6 +14,20 @@ Additionally you can enable the debug log using
* If the check command failed - what's the output of your manual plugin tests?
* In case of [debugging](#debug) Icinga 2, the full back traces and outputs
## <a id="troubleshooting-enable-debug-output"></a> Enable Debug Output
Run Icinga 2 in foreground with debugging enabled You can specify the debug
log severity as additional parameter argument to `-x` (or `--debug`). Default
is `debug`.
# /usr/sbin/icinga2 -c /etc/icinga2/icinga2.conf -x notice
Additionally you can enable the debug log using
# icinga2-enable-feature debuglog
# service icinga2 restart
# tail -f /var/log/icinga2/debug.log
## <a id="checks-not-executed"></a> Checks are not executed
* Check the debug log if the check command gets executed

View File

@ -334,7 +334,7 @@ int Main(void)
("config,c", po::value<std::vector<std::string> >(), "parse a configuration file")
("no-config,z", "start without a configuration file")
("validate,C", "exit after validating the configuration")
("debug,x", "enable debugging")
("debug,x", po::value<std::string>(), "enable debugging with optional severity level specified")
("errorlog,e", po::value<std::string>(), "log fatal errors to the specified log file (only works in combination with --daemonize)")
#ifndef _WIN32
("reload-internal", po::value<int>(), "used internally to implement config reload: do not call manually, send SIGHUP instead")
@ -428,9 +428,15 @@ int Main(void)
}
#endif /* _WIN32 */
if (g_AppParams.count("debug"))
if (g_AppParams.count("debug")) {
Application::SetDebugging(true);
String debug_severity = g_AppParams["debug"].as<std::string>();
if (!debug_severity.IsEmpty())
Application::SetDebuggingSeverity(Logger::StringToSeverity(debug_severity));
}
if (g_AppParams.count("help") || g_AppParams.count("version")) {
String appName = Utility::BaseName(argv[0]);

View File

@ -51,6 +51,7 @@ bool Application::m_RequestReopenLogs = false;
pid_t Application::m_ReloadProcess = 0;
static bool l_Restarting = false;
bool Application::m_Debugging = false;
LogSeverity Application::m_DebuggingSeverity = LogDebug;
int Application::m_ArgC;
char **Application::m_ArgV;
double Application::m_StartTime;
@ -459,6 +460,29 @@ bool Application::IsDebugging(void)
return m_Debugging;
}
/**
* Sets debugging severity.
*
* @param severity Debug log severity.
*/
void Application::SetDebuggingSeverity(LogSeverity severity)
{
Application::m_DebuggingSeverity = severity;
}
/**
* Retrieves the debugging severity of the application.
*
* @returns severity 'debug' if not set, severity value otherwise.
*/
LogSeverity Application::GetDebuggingSeverity(void)
{
if (!Application::m_DebuggingSeverity)
return LogDebug;
return Application::m_DebuggingSeverity;
}
/**
* Display version information.
*/

View File

@ -24,6 +24,7 @@
#include "base/application.th"
#include "base/threadpool.h"
#include "base/utility.h"
#include "base/logger_fwd.h"
namespace icinga
{
@ -71,6 +72,9 @@ public:
static void SetDebugging(bool debug);
static bool IsDebugging(void);
static void SetDebuggingSeverity(LogSeverity severity);
static LogSeverity GetDebuggingSeverity(void);
void UpdatePidFile(const String& filename, pid_t pid = Utility::GetPid());
void ClosePidFile(bool unlink);
static pid_t ReadPidFile(const String& filename);
@ -137,6 +141,7 @@ private:
static char **m_ArgV; /**< Command-line arguments. */
FILE *m_PidFile; /**< The PID file */
static bool m_Debugging; /**< Whether debugging is enabled. */
static LogSeverity m_DebuggingSeverity; /**< Whether debugging severity is set. */
static double m_StartTime;
#ifndef _WIN32

View File

@ -108,7 +108,7 @@ void icinga::Log(LogSeverity severity, const String& facility,
LogSeverity defaultLogLevel;
if (Application::IsDebugging())
defaultLogLevel = LogDebug;
defaultLogLevel = Application::GetDebuggingSeverity();
else
defaultLogLevel = LogInformation;