void scalliontor_setLogging() { /* setup a callback so we can log into shadow */ log_severity_list_t *severity = g_new0(log_severity_list_t, 1); /* we'll log everything according to Shadow's filter */ set_log_severity_config(LOG_DEBUG, LOG_ERR, severity); add_callback_log(severity, scalliontor_logmsg_cb); g_free(severity); }
static void setup_log_callback(void) { log_severity_list_t lst; memset(&lst, 0, sizeof(lst)); lst.masks[LOG_ERR - LOG_ERR] = ~0; lst.masks[LOG_WARN - LOG_ERR] = ~0; lst.masks[LOG_NOTICE - LOG_ERR] = ~0; add_callback_log(&lst, log_cback); }
static void test_get_sigsafe_err_fds(void *arg) { const int *fds; int n; log_severity_list_t include_bug, no_bug, no_bug2; (void) arg; init_logging(1); n = tor_log_get_sigsafe_err_fds(&fds); tt_int_op(n, OP_EQ, 1); tt_int_op(fds[0], OP_EQ, STDERR_FILENO); set_log_severity_config(LOG_WARN, LOG_ERR, &include_bug); set_log_severity_config(LOG_WARN, LOG_ERR, &no_bug); no_bug.masks[0] &= ~(LD_BUG|LD_GENERAL); set_log_severity_config(LOG_INFO, LOG_NOTICE, &no_bug2); /* Add some logs; make sure the output is as expected. */ mark_logs_temp(); add_stream_log(&include_bug, "dummy-1", 3); add_stream_log(&no_bug, "dummy-2", 4); add_stream_log(&no_bug2, "dummy-3", 5); add_callback_log(&include_bug, dummy_cb_fn); close_temp_logs(); tor_log_update_sigsafe_err_fds(); n = tor_log_get_sigsafe_err_fds(&fds); tt_int_op(n, OP_EQ, 2); tt_int_op(fds[0], OP_EQ, STDERR_FILENO); tt_int_op(fds[1], OP_EQ, 3); /* Allow STDOUT to replace STDERR. */ add_stream_log(&include_bug, "dummy-4", STDOUT_FILENO); tor_log_update_sigsafe_err_fds(); n = tor_log_get_sigsafe_err_fds(&fds); tt_int_op(n, OP_EQ, 2); tt_int_op(fds[0], OP_EQ, 3); tt_int_op(fds[1], OP_EQ, STDOUT_FILENO); /* But don't allow it to replace explicit STDERR. */ add_stream_log(&include_bug, "dummy-5", STDERR_FILENO); tor_log_update_sigsafe_err_fds(); n = tor_log_get_sigsafe_err_fds(&fds); tt_int_op(n, OP_EQ, 3); tt_int_op(fds[0], OP_EQ, STDERR_FILENO); tt_int_op(fds[1], OP_EQ, STDOUT_FILENO); tt_int_op(fds[2], OP_EQ, 3); /* Don't overflow the array. */ { int i; for (i=5; i<20; ++i) { add_stream_log(&include_bug, "x-dummy", i); } } tor_log_update_sigsafe_err_fds(); n = tor_log_get_sigsafe_err_fds(&fds); tt_int_op(n, OP_EQ, 8); done: ; }