lightningd: extend log-level to support filter per-file.

Fixes: #5392
Changelog-Added: config: `log-level` can be specified on a per-logfile basis.
This commit is contained in:
Rusty Russell
2023-07-19 14:26:22 +09:30
parent 4e8e9c2417
commit 4a7b1b457e
4 changed files with 302 additions and 6 deletions

View File

@@ -2988,9 +2988,30 @@ def test_getlog(node_factory):
def test_log_filter(node_factory):
"""Test the log-level option with subsystem filters"""
# This actually suppresses debug!
l1, l2 = node_factory.line_graph(2, opts=[{'log-level': ['debug', 'broken:022d223620']}, {}])
l1 = node_factory.get_node(options={'log-level': ['debug', 'broken:022d223620']})
l2 = node_factory.get_node(start=False)
log1 = os.path.join(l2.daemon.lightning_dir, "log")
log2 = os.path.join(l2.daemon.lightning_dir, "log2")
# We need to set log file before we set options on it.
l2.daemon.early_opts += [f'--log-file={l}' for l in [log2] + l2.daemon.opts['log-file']]
del l2.daemon.opts['log-file']
l2.daemon.opts['log-level'] = ["broken", # broken messages go everywhere
f"debug::{log1}", # debug to normal log
"debug::-", # debug to stdout
f'io:0266e4598d1d3:{log2}']
l2.start()
node_factory.join_nodes([l1, l2])
# No debug messages in l1's log
assert not l1.daemon.is_in_log(r'-chan#[0-9]*:')
# FIXME: the connectd messages should also be matched!
# assert not l1.daemon.is_in_log(l2.info['id'])
# Every message in log2 must be about l1...
with open(log2, "r") as f:
lines = f.readlines()
assert all([' {}-'.format(l1.info['id']) in l for l in lines])
def test_force_feerates(node_factory):