add_stream_log(levelMin, levelMax, "<stderr>", stderr);
log_fn(LOG_WARN, "Cannot write to LogFile '%s': %s.", file_opt->value,
strerror(errno));
+ return;
}
log_fn(LOG_NOTICE, "Successfully opened LogFile '%s', redirecting output.",
file_opt->value);
struct config_line_t *opt = options->LogOptions;
/* Special case if nothing is specified. */
- if(!opt)
+ if(!opt) {
add_single_log(NULL, NULL, options->RunAsDaemon);
+ /* don't return yet, in case we want to do a debuglogfile below */
+ }
/* Special case for if first option is LogLevel. */
if (opt && !strcasecmp(opt->key, "LogLevel")) {
log_fn(LOG_ERR,"Reading config failed. For usage, try -h.");
return -1;
}
- close_logs(); /* we'll close, then open with correct loglevel if necessary */
/* Setuid/setgid as appropriate */
if(options.User || options.Group) {
start_daemon(options.DataDirectory);
}
+ close_logs(); /* we'll close, then open with correct loglevel if necessary */
+
/* Configure the log(s) */
config_init_logs(&options);
finish_daemon();
}
- /* Write our pid to the pid file. if we do not have write permissions we
+ /* Write our pid to the pid file. If we do not have write permissions we
* will log a warning */
if(options.PidFile)
write_pidfile(options.PidFile);
int tor_main(int argc, char *argv[]) {
/* give it somewhere to log to initially */
- add_stream_log(LOG_INFO, LOG_ERR, "<stdout>", stdout);
+ add_stream_log(LOG_NOTICE, LOG_ERR, "<stdout>", stdout);
log_fn(LOG_NOTICE,"Tor v%s. This is experimental software. Do not use it if you need anonymity.",VERSION);
if (network_init()<0) {