Commit 11a23fc2 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

clean up logging, allow user to specify log files

If DebugLogFile is specified, log to it at -l debug
If LogFile is specified, log to it at the -l from the commandline
  (default info)
If no LogFile *and* not a Daemon, then log to stdout.
Make conn->s = -1 by default (this might break things)
When kill -USR1, prefer to log at INFO, but make sure they always see it.


svn:r596
parent 695920d0
Loading
Loading
Loading
Loading
+0 −5
Changes for src/common/log.c: 0 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -75,11 +75,6 @@ logv(int severity, const char *funcname, const char *format, va_list ap)
  assert(format);
  if (severity < loglevel)
    return;
  if (!logfiles) {
    /* XXX This is a temporary measure until we get configuration support
       for logfiles. */
    add_stream_log(loglevel, "<stdout>", stdout);
  }
  for (lf = logfiles; lf; lf = lf->next) {
    if (severity < lf->loglevel || severity > lf->max_loglevel)
      continue;
+4 −2
Changes for src/or/config.c: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -151,6 +151,8 @@ static void config_assign(or_options_t *options, struct config_line *list) {

    /* string options */
    config_compare(list, "LogLevel",       CONFIG_TYPE_STRING, &options->LogLevel) ||
    config_compare(list, "LogFile",        CONFIG_TYPE_STRING, &options->LogFile) ||
    config_compare(list, "DebugLogFile",   CONFIG_TYPE_STRING, &options->DebugLogFile) ||
    config_compare(list, "DataDirectory",  CONFIG_TYPE_STRING, &options->DataDirectory) ||
    config_compare(list, "RouterFile",     CONFIG_TYPE_STRING, &options->RouterFile) ||
    config_compare(list, "PidFile",        CONFIG_TYPE_STRING, &options->PidFile) ||
@@ -171,10 +173,10 @@ static void config_assign(or_options_t *options, struct config_line *list) {
    config_compare(list, "NumCpus",         CONFIG_TYPE_INT, &options->NumCpus) ||

    config_compare(list, "OnionRouter",     CONFIG_TYPE_BOOL, &options->OnionRouter) ||
    config_compare(list, "Daemon",          CONFIG_TYPE_BOOL, &options->Daemon) ||
    config_compare(list, "TrafficShaping",  CONFIG_TYPE_BOOL, &options->TrafficShaping) ||
    config_compare(list, "LinkPadding",     CONFIG_TYPE_BOOL, &options->LinkPadding) ||
    config_compare(list, "IgnoreVersion",   CONFIG_TYPE_BOOL, &options->IgnoreVersion) ||
    config_compare(list, "RunAsDaemon",     CONFIG_TYPE_BOOL, &options->RunAsDaemon) ||

    /* float options */
    config_compare(list, "CoinWeight",     CONFIG_TYPE_DOUBLE, &options->CoinWeight)
@@ -201,7 +203,7 @@ int getconfig(int argc, char **argv, or_options_t *options) {
  memset(options,0,sizeof(or_options_t));
  options->LogLevel = "info";
  options->ExitPolicy = "reject 127.0.0.1:*,reject 18.244.0.188:25,accept *:*";
  options->loglevel = LOG_DEBUG;
  options->loglevel = LOG_INFO;
  options->PidFile = "tor.pid";
  options->DataDirectory = NULL;
  options->CoinWeight = 0.1;
+2 −1
Changes for src/or/connection.c: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ connection_t *connection_new(int type) {

  conn = (connection_t *)tor_malloc(sizeof(connection_t));
  memset(conn,0,sizeof(connection_t)); /* zero it out to start */
  conn->s = -1; /* give it a default of 'not used' */

  conn->type = type;
  if(!connection_is_listener(conn)) { /* listeners never use their buf */
@@ -117,7 +118,7 @@ void connection_free(connection_t *conn) {
  if (conn->nickname) 
    free(conn->nickname);

  if(conn->s > 0) {
  if(conn->s >= 0) {
    log_fn(LOG_INFO,"closing fd %d.",conn->s);
    close(conn->s);
  }
+1 −1
Changes for src/or/connection_edge.c: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -557,7 +557,7 @@ static int connection_ap_handshake_socks_reply(connection_t *conn, char *reply,
  n_stream->address = tor_strdup(cell->payload + RELAY_HEADER_SIZE + STREAM_ID_SIZE);
  n_stream->port = atoi(colon+1);
  n_stream->state = EXIT_CONN_STATE_RESOLVING;
  n_stream->s = -1; /* not yet valid */
  /* leave n_stream->s at -1, because it's not yet valid */
  n_stream->package_window = STREAMWINDOW_START;
  n_stream->deliver_window = STREAMWINDOW_START;
  if(connection_add(n_stream) < 0) { /* no space, forget it */
+10 −2
Changes for src/or/main.c: 10 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -601,7 +601,8 @@ static int do_main_loop(void) {
  for(;;) {
#ifndef MS_WIN32 /* do signal stuff only on unix */
    if(please_dumpstats) {
      dumpstats(LOG_INFO);
      /* prefer to log it at INFO, but make sure we always see it */
      dumpstats(options.loglevel>LOG_INFO ? options.loglevel : LOG_INFO);
      please_dumpstats = 0;
    }
    if(please_reset) {
@@ -775,13 +776,20 @@ int tor_main(int argc, char *argv[]) {
    return -1;
  }
  log_set_severity(options.loglevel); /* assign logging severity level from options */
  if(options.DebugLogFile)
    add_file_log(LOG_DEBUG, options.DebugLogFile);
  if(options.LogFile)
    add_file_log(options.loglevel, options.LogFile);
  if(!options.LogFile && !options.RunAsDaemon)
    add_stream_log(options.loglevel, "<stdout>", stdout);

  global_read_bucket = options.TotalBandwidth; /* start it at 1 second of traffic */
  stats_prev_global_read_bucket = global_read_bucket;

  /* write our pid to the pid file */
  write_pidfile(options.PidFile);

  if(options.Daemon)
  if(options.RunAsDaemon)
    daemonize();

  if(options.OnionRouter) { /* only spawn dns handlers if we're a router */
Loading