mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 23:24:27 +01:00
lightningd: clean up logging initializations.
Rather than initializating the "print_level" field on first use, we can do it in logging_options_parsed(), now we have a linked list of them. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -66,8 +66,8 @@ struct logger {
|
|||||||
const struct node_id *default_node_id;
|
const struct node_id *default_node_id;
|
||||||
struct log_prefix *prefix;
|
struct log_prefix *prefix;
|
||||||
|
|
||||||
/* Non-NULL once it's been initialized */
|
/* Print log message at >= this level */
|
||||||
enum log_level *print_level;
|
enum log_level print_level;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct log_prefix *log_prefix_new(const tal_t *ctx,
|
static struct log_prefix *log_prefix_new(const tal_t *ctx,
|
||||||
@@ -333,8 +333,11 @@ new_logger(const tal_t *ctx, struct log_book *log_book,
|
|||||||
log->default_node_id = tal_dup_or_null(log, struct node_id,
|
log->default_node_id = tal_dup_or_null(log, struct node_id,
|
||||||
default_node_id);
|
default_node_id);
|
||||||
|
|
||||||
/* Initialized on first use */
|
/* Still initializing? Print UNUSUAL / BROKEN messages only */
|
||||||
log->print_level = NULL;
|
if (!log->log_book->default_print_level)
|
||||||
|
log->print_level = LOG_UNUSUAL;
|
||||||
|
else
|
||||||
|
log->print_level = filter_level(log->log_book, log->prefix, default_node_id);
|
||||||
list_add(&log->log_book->loggers, &log->list);
|
list_add(&log->log_book->loggers, &log->list);
|
||||||
tal_add_destructor(log, destroy_logger);
|
tal_add_destructor(log, destroy_logger);
|
||||||
return log;
|
return log;
|
||||||
@@ -345,18 +348,6 @@ const char *log_prefix(const struct logger *log)
|
|||||||
return log->prefix->prefix;
|
return log->prefix->prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum log_level log_print_level(struct logger *log, const struct node_id *node_id)
|
|
||||||
{
|
|
||||||
if (!log->print_level) {
|
|
||||||
/* Not set globally yet? Print UNUSUAL / BROKEN messages only */
|
|
||||||
if (!log->log_book->default_print_level)
|
|
||||||
return LOG_UNUSUAL;
|
|
||||||
log->print_level = tal(log, enum log_level);
|
|
||||||
*log->print_level = filter_level(log->log_book, log->prefix, node_id);
|
|
||||||
}
|
|
||||||
return *log->print_level;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool log_has_io_logging(const struct logger *log)
|
bool log_has_io_logging(const struct logger *log)
|
||||||
{
|
{
|
||||||
return filter_level(log->log_book, log->prefix, log->default_node_id) < LOG_DBG;
|
return filter_level(log->log_book, log->prefix, log->default_node_id) < LOG_DBG;
|
||||||
@@ -418,7 +409,7 @@ static struct log_entry *new_log_entry(struct logger *log, enum log_level level,
|
|||||||
|
|
||||||
static void maybe_print(struct logger *log, const struct log_entry *l)
|
static void maybe_print(struct logger *log, const struct log_entry *l)
|
||||||
{
|
{
|
||||||
if (l->level >= log_print_level(log, l->nc ? &l->nc->node_id : NULL))
|
if (l->level >= log->print_level)
|
||||||
log_to_files(log->log_book->prefix, log->prefix->prefix, l->level,
|
log_to_files(log->log_book->prefix, log->prefix->prefix, l->level,
|
||||||
l->nc ? &l->nc->node_id : NULL,
|
l->nc ? &l->nc->node_id : NULL,
|
||||||
&l->time, l->log,
|
&l->time, l->log,
|
||||||
@@ -468,7 +459,7 @@ void log_io(struct logger *log, enum log_level dir,
|
|||||||
assert(dir == LOG_IO_IN || dir == LOG_IO_OUT);
|
assert(dir == LOG_IO_IN || dir == LOG_IO_OUT);
|
||||||
|
|
||||||
/* Print first, in case we need to truncate. */
|
/* Print first, in case we need to truncate. */
|
||||||
if (l->level >= log_print_level(log, node_id))
|
if (l->level >= log->print_level)
|
||||||
log_to_files(log->log_book->prefix, log->prefix->prefix, l->level,
|
log_to_files(log->log_book->prefix, log->prefix->prefix, l->level,
|
||||||
l->nc ? &l->nc->node_id : NULL,
|
l->nc ? &l->nc->node_id : NULL,
|
||||||
&l->time, str,
|
&l->time, str,
|
||||||
@@ -769,17 +760,26 @@ void opt_register_logging(struct lightningd *ld)
|
|||||||
|
|
||||||
void logging_options_parsed(struct log_book *log_book)
|
void logging_options_parsed(struct log_book *log_book)
|
||||||
{
|
{
|
||||||
|
struct logger *log;
|
||||||
|
|
||||||
/* If they didn't set an explicit level, set to info */
|
/* If they didn't set an explicit level, set to info */
|
||||||
if (!log_book->default_print_level) {
|
if (!log_book->default_print_level) {
|
||||||
log_book->default_print_level = tal(log_book, enum log_level);
|
log_book->default_print_level = tal(log_book, enum log_level);
|
||||||
*log_book->default_print_level = DEFAULT_LOGLEVEL;
|
*log_book->default_print_level = DEFAULT_LOGLEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set print_levels for each log, depending on filters. */
|
||||||
|
list_for_each(&log_book->loggers, log, list) {
|
||||||
|
log->print_level = filter_level(log_book,
|
||||||
|
log->prefix,
|
||||||
|
log->default_node_id);
|
||||||
|
}
|
||||||
|
|
||||||
/* Catch up, since before we were only printing BROKEN msgs */
|
/* Catch up, since before we were only printing BROKEN msgs */
|
||||||
for (size_t i = 0; i < log_book->num_entries; i++) {
|
for (size_t i = 0; i < log_book->num_entries; i++) {
|
||||||
const struct log_entry *l = &log_book->log[i];
|
const struct log_entry *l = &log_book->log[i];
|
||||||
|
|
||||||
if (l->level >= filter_level(log_book, l->prefix, NULL))
|
if (l->level >= filter_level(log_book, l->prefix, l->nc ? &l->nc->node_id : NULL))
|
||||||
log_to_files(log_book->prefix, l->prefix->prefix, l->level,
|
log_to_files(log_book->prefix, l->prefix->prefix, l->level,
|
||||||
l->nc ? &l->nc->node_id : NULL,
|
l->nc ? &l->nc->node_id : NULL,
|
||||||
&l->time, l->log,
|
&l->time, l->log,
|
||||||
|
|||||||
@@ -2967,7 +2967,7 @@ def test_notimestamp_logging(node_factory):
|
|||||||
# Make sure this is specified *before* other options!
|
# Make sure this is specified *before* other options!
|
||||||
l1.daemon.early_opts = ['--log-timestamps=false']
|
l1.daemon.early_opts = ['--log-timestamps=false']
|
||||||
l1.start()
|
l1.start()
|
||||||
assert l1.daemon.logs[0].startswith("DEBUG")
|
assert l1.daemon.logs[0].startswith("lightningd-1 DEBUG")
|
||||||
|
|
||||||
assert l1.rpc.listconfigs()['configs']['log-timestamps']['value_bool'] is False
|
assert l1.rpc.listconfigs()['configs']['log-timestamps']['value_bool'] is False
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user