mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
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
This commit is contained in:
parent
695920d09f
commit
11a23fc280
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -416,6 +416,8 @@ typedef struct circuit_t circuit_t;
|
||||
|
||||
typedef struct {
|
||||
char *LogLevel;
|
||||
char *LogFile;
|
||||
char *DebugLogFile;
|
||||
char *DataDirectory;
|
||||
char *RouterFile;
|
||||
char *Nickname;
|
||||
@ -423,7 +425,6 @@ typedef struct {
|
||||
char *PidFile;
|
||||
char *ExitPolicy;
|
||||
double CoinWeight;
|
||||
int Daemon;
|
||||
int ORPort;
|
||||
int APPort;
|
||||
int DirPort;
|
||||
@ -432,6 +433,7 @@ typedef struct {
|
||||
int TrafficShaping;
|
||||
int LinkPadding;
|
||||
int IgnoreVersion;
|
||||
int RunAsDaemon;
|
||||
int DirRebuildPeriod;
|
||||
int DirFetchPostPeriod;
|
||||
int KeepalivePeriod;
|
||||
|
Loading…
Reference in New Issue
Block a user