]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Add cmd name as event prefix during cctx->cmd->cmd(cctx) execution
authorMarco Bettini <marco.bettini@open-xchange.com>
Wed, 24 Aug 2022 14:48:22 +0000 (14:48 +0000)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 6 Oct 2022 18:01:26 +0000 (18:01 +0000)
src/doveadm/client-connection-http.c
src/doveadm/doveadm-cmd-parse.c
src/doveadm/test-doveadm-cmd-parse.c

index a6e1f5a3bb2a20f5fd92ea0133c5b46bb9aed6bb..6093724b2ee3535748b7ecaa7348da2a35d92d62 100644 (file)
@@ -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);
index cca1be1a7c843437a376aeb0db6431e8d671bbd0..c0ee9be41da8454185821d2c9888d62bd205cbee 100644 (file)
@@ -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;
index ece3f7ff4029a4e372110e11eeda97ebbd1fc5a8..7b4869c4d1917dc83da9919561230ddbec8844b7 100644 (file)
@@ -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;
 }