mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
common: only log io if they set --debug-subdaemon-io=<daemon> or with SIGUSR1.
Otherwise we just log the type of msg. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -10,13 +10,31 @@
|
||||
#include <common/status.h>
|
||||
#include <common/utils.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <stdarg.h>
|
||||
#include <wire/wire.h>
|
||||
#include <wire/peer_wire.h>
|
||||
#include <wire/wire_sync.h>
|
||||
|
||||
static int status_fd = -1;
|
||||
static struct daemon_conn *status_conn;
|
||||
const void *trc;
|
||||
volatile bool logging_io = false;
|
||||
|
||||
static void got_sigusr1(int signal)
|
||||
{
|
||||
logging_io = !logging_io;
|
||||
}
|
||||
|
||||
static void setup_logging_sighandler(void)
|
||||
{
|
||||
struct sigaction act;
|
||||
|
||||
memset(&act, 0, sizeof(act));
|
||||
act.sa_handler = got_sigusr1;
|
||||
act.sa_flags = SA_RESTART;
|
||||
|
||||
sigaction(SIGUSR1, &act, NULL);
|
||||
}
|
||||
|
||||
void status_setup_sync(int fd)
|
||||
{
|
||||
@@ -24,6 +42,7 @@ void status_setup_sync(int fd)
|
||||
assert(!status_conn);
|
||||
status_fd = fd;
|
||||
trc = tal_tmpctx(NULL);
|
||||
setup_logging_sighandler();
|
||||
}
|
||||
|
||||
void status_setup_async(struct daemon_conn *master)
|
||||
@@ -34,6 +53,7 @@ void status_setup_async(struct daemon_conn *master)
|
||||
|
||||
/* Don't use tmpctx here, otherwise debug_poll gets upset. */
|
||||
trc = tal(NULL, char);
|
||||
setup_logging_sighandler();
|
||||
}
|
||||
|
||||
static bool too_large(size_t len, int type)
|
||||
@@ -75,7 +95,7 @@ static void status_send_with_hdr(u16 type, const void *p, size_t len)
|
||||
}
|
||||
}
|
||||
|
||||
void status_io(enum log_level iodir, const u8 *p)
|
||||
static void status_io_full(enum log_level iodir, const u8 *p)
|
||||
{
|
||||
u16 type = STATUS_LOG_MIN + iodir;
|
||||
u8 *msg = tal_arr(NULL, u8, 0);
|
||||
@@ -95,6 +115,21 @@ void status_io(enum log_level iodir, const u8 *p)
|
||||
}
|
||||
}
|
||||
|
||||
static void status_io_short(enum log_level iodir, const u8 *p)
|
||||
{
|
||||
status_debug("%s %s",
|
||||
iodir == LOG_IO_OUT ? "peer_out" : "peer_in",
|
||||
wire_type_name(fromwire_peektype(p)));
|
||||
}
|
||||
|
||||
void status_io(enum log_level iodir, const u8 *p)
|
||||
{
|
||||
if (logging_io)
|
||||
status_io_full(iodir, p);
|
||||
else
|
||||
status_io_short(iodir, p);
|
||||
}
|
||||
|
||||
void status_vfmt(enum log_level level, const char *fmt, va_list ap)
|
||||
{
|
||||
char *str;
|
||||
|
||||
Reference in New Issue
Block a user