From 41cb2cc10063559ae6a440c9da2a3b0b87703ea8 Mon Sep 17 00:00:00 2001 From: Marco Bettini Date: Wed, 24 Aug 2022 14:48:22 +0000 Subject: [PATCH] doveadm: Add cmd name as event prefix during cctx->cmd->cmd(cctx) execution --- src/doveadm/client-connection-http.c | 11 ++++++++--- src/doveadm/doveadm-cmd-parse.c | 8 +++++++- src/doveadm/test-doveadm-cmd-parse.c | 2 ++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/doveadm/client-connection-http.c b/src/doveadm/client-connection-http.c index a6e1f5a3bb..6093724b2e 100644 --- a/src/doveadm/client-connection-http.c +++ b/src/doveadm/client-connection-http.c @@ -218,12 +218,17 @@ doveadm_http_server_command_execute(struct client_request_http *req) cctx->remote_ip = conn->conn.remote_ip; cctx->remote_port = conn->conn.remote_port; + client_connection_set_proctitle(&conn->conn, cctx->cmd->name); + event_set_append_log_prefix(cctx->event, t_strdup_printf( + "cmd %s: ", cctx->cmd->name)); + if (doveadm_cmd_param_str(cctx, "user", &user)) - i_info("Executing command '%s' as '%s'", cctx->cmd->name, user); + e_info(cctx->event, "Executing command as '%s'", user); else - i_info("Executing command '%s'", cctx->cmd->name); - client_connection_set_proctitle(&conn->conn, cctx->cmd->name); + e_info(cctx->event, "Executing command"); cctx->cmd->cmd(cctx); + + event_drop_parent_log_prefixes(cctx->event, 1); client_connection_set_proctitle(&conn->conn, ""); o_stream_switch_ioloop_to(req->output, prev_ioloop); diff --git a/src/doveadm/doveadm-cmd-parse.c b/src/doveadm/doveadm-cmd-parse.c index cca1be1a7c..c0ee9be41d 100644 --- a/src/doveadm/doveadm-cmd-parse.c +++ b/src/doveadm/doveadm-cmd-parse.c @@ -428,7 +428,13 @@ int doveadm_cmdline_run(int argc, const char *const argv[], cctx->argv = array_get_modifiable(&pargv, &pargc); cctx->argc = pargc; - cctx->cmd->cmd(cctx); + if (cctx->cmd->name != NULL) { + const char * prefix = t_strdup_printf("cmd %s: ", cctx->cmd->name); + event_set_append_log_prefix(cctx->event, prefix); + cctx->cmd->cmd(cctx); + event_drop_parent_log_prefixes(cctx->event, 1); + } else + cctx->cmd->cmd(cctx); doveadm_cmd_params_clean(&pargv); return 0; diff --git a/src/doveadm/test-doveadm-cmd-parse.c b/src/doveadm/test-doveadm-cmd-parse.c index ece3f7ff40..7b4869c4d1 100644 --- a/src/doveadm/test-doveadm-cmd-parse.c +++ b/src/doveadm/test-doveadm-cmd-parse.c @@ -39,6 +39,7 @@ static void test_case(const char *name, int expected_rc, cmd->cmd = assertfn; cmds[0] = *cmd; cctx->cmd = cmds; + cctx->event = event_create(NULL); if (expected_rc < 0) test_expect_errors(1); @@ -47,6 +48,7 @@ static void test_case(const char *name, int expected_rc, str_array_length(argv), argv, cctx); test_assert_cmp(expected_rc, ==, actual_rc); + event_unref(&cctx->event); test_end(); } T_END; } -- 2.47.3