diff --git a/etc/tinyproxy.conf.in b/etc/tinyproxy.conf.in index fe0c117..e1f534a 100644 --- a/etc/tinyproxy.conf.in +++ b/etc/tinyproxy.conf.in @@ -90,7 +90,8 @@ StatFile "@pkgdatadir@/stats.html" # LogFile: Allows you to specify the location where information should # be logged to. If you would prefer to log to syslog, then disable this # and enable the Syslog directive. These directives are mutually -# exclusive. +# exclusive. If neither Syslog nor LogFile are specified, output goes +# to stdout. # #LogFile "@localstatedir@/log/tinyproxy/tinyproxy.log" diff --git a/src/log.c b/src/log.c index f5a0b44..c5368b8 100644 --- a/src/log.c +++ b/src/log.c @@ -70,7 +70,14 @@ static unsigned int logging_initialized = FALSE; /* boolean */ */ int open_log_file (const char *log_file_name) { - log_file_fd = create_file_safely (log_file_name, FALSE); + if (log_file_name == NULL) { + if(config.godaemon == FALSE) + log_file_fd = fileno(stdout); + else + log_file_fd = -1; + } else { + log_file_fd = create_file_safely (log_file_name, FALSE); + } return log_file_fd; } @@ -79,7 +86,7 @@ int open_log_file (const char *log_file_name) */ void close_log_file (void) { - if (log_file_fd < 0) { + if (log_file_fd < 0 || log_file_fd == fileno(stdout)) { return; } @@ -108,6 +115,9 @@ void log_message (int level, const char *fmt, ...) ssize_t ret; + if(!config.syslog && log_file_fd == -1) + return; + #ifdef NDEBUG /* * Figure out if we should write the message or not. diff --git a/src/main.c b/src/main.c index 50cacca..e52b4b2 100644 --- a/src/main.c +++ b/src/main.c @@ -355,7 +355,7 @@ static void initialize_config_defaults (struct config_s *conf) conf->errorpages = NULL; conf->stathost = safestrdup (TINYPROXY_STATHOST); conf->idletimeout = MAX_IDLE_TIME; - conf->logf_name = safestrdup (LOCALSTATEDIR "/log/tinyproxy/tinyproxy.log"); + conf->logf_name = NULL; conf->pidpath = NULL; } @@ -415,8 +415,13 @@ main (int argc, char **argv) anonymous_insert ("Content-Type"); } - if (config.godaemon == TRUE) + if (config.godaemon == TRUE) { + if (!config.syslog && config.logf_name == NULL) + fprintf(stderr, "WARNING: logging deactivated " + "(can't log to stdout when daemonized)\n"); + makedaemon (); + } if (set_signal_handler (SIGPIPE, SIG_IGN) == SIG_ERR) { fprintf (stderr, "%s: Could not set the \"SIGPIPE\" signal.\n",