diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in index 16b53b68f..f1a2b09b1 100644 --- a/data/NetworkManager.service.in +++ b/data/NetworkManager.service.in @@ -8,10 +8,6 @@ Before=network.target Type=dbus BusName=org.freedesktop.NetworkManager ExecStart=@sbindir@/NetworkManager --no-daemon -# Suppress stderr to eliminate duplicated messages in syslog. NM calls openlog() -# with LOG_PERROR when run in foreground. But systemd redirects stderr to -# syslog by default, which results in logging each message twice. -StandardError=null # NM doesn't want systemd to kill its children for it KillMode=process diff --git a/man/NetworkManager.xml b/man/NetworkManager.xml index da4e99ddb..0b34cd23e 100644 --- a/man/NetworkManager.xml +++ b/man/NetworkManager.xml @@ -137,9 +137,13 @@ - Do not daemonize. This is useful for - debugging, and directs log output to the controlling terminal - in addition to syslog. + Do not daemonize. + + + + + Do not daemonize, and direct log output to the + controlling terminal in addition to syslog. diff --git a/src/logging/nm-logging.c b/src/logging/nm-logging.c index e087fa9de..509d1cf22 100644 --- a/src/logging/nm-logging.c +++ b/src/logging/nm-logging.c @@ -349,12 +349,12 @@ nm_log_handler (const gchar *log_domain, } void -nm_logging_start (gboolean become_daemon) +nm_logging_start (gboolean debug) { - if (become_daemon) - openlog (G_LOG_DOMAIN, LOG_PID, LOG_DAEMON); - else + if (debug) openlog (G_LOG_DOMAIN, LOG_CONS | LOG_PERROR | LOG_PID, LOG_USER); + else + openlog (G_LOG_DOMAIN, LOG_PID, LOG_DAEMON); g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, diff --git a/src/logging/nm-logging.h b/src/logging/nm-logging.h index 00a92f5aa..d26c81aed 100644 --- a/src/logging/nm-logging.h +++ b/src/logging/nm-logging.h @@ -123,7 +123,7 @@ const char *nm_logging_all_domains_to_string (void); #undef nm_error_str gboolean nm_logging_setup (const char *level, const char *domains, GError **error); -void nm_logging_start (gboolean become_daemon); +void nm_logging_start (gboolean debug); void nm_logging_shutdown (void); #endif /* NM_LOGGING_H */ diff --git a/src/main.c b/src/main.c index 833effd1f..3b5f9663a 100644 --- a/src/main.c +++ b/src/main.c @@ -305,6 +305,7 @@ main (int argc, char *argv[]) { GOptionContext *opt_ctx = NULL; gboolean become_daemon = FALSE; + gboolean debug = FALSE; gboolean g_fatal_warnings = FALSE; gs_free char *pidfile = NULL; gs_free char *state_file = NULL; @@ -325,6 +326,7 @@ main (int argc, char *argv[]) GOptionEntry options[] = { { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Print NetworkManager version and exit"), NULL }, { "no-daemon", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &become_daemon, N_("Don't become a daemon"), NULL }, + { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Don't become a daemon, and log to stderr"), NULL }, { "g-fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &g_fatal_warnings, N_("Make all warnings fatal"), NULL }, { "pid-file", 0, 0, G_OPTION_ARG_FILENAME, &pidfile, N_("Specify the location of a PID file"), N_("filename") }, { "state-file", 0, 0, G_OPTION_ARG_FILENAME, &state_file, N_("State file location"), N_("/path/to/state.file") }, @@ -426,7 +428,7 @@ main (int argc, char *argv[]) } g_clear_error (&error); - if (become_daemon) { + if (become_daemon && !debug) { if (daemon (0, 0) < 0) { int saved_errno; @@ -467,7 +469,7 @@ main (int argc, char *argv[]) */ dbus_glib_global_set_disable_legacy_property_access (); - nm_logging_start (become_daemon); + nm_logging_start (debug); nm_log_info (LOGD_CORE, "NetworkManager (version " NM_DIST_VERSION ") is starting..."); success = FALSE;