diff options
author | Csaba Henk <csaba@gluster.com> | 2011-07-23 12:16:07 +0200 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2011-09-12 06:22:32 -0700 |
commit | 32b96d66890a16fd23c8ae065297c7a98097d340 (patch) | |
tree | 353d7116ceb99624318461d19722580f25b4b824 | |
parent | 3d67836dba4f5a94f33e9ac13b7ebbf01344ac37 (diff) |
cli: add --log-{file,level} options
Apart from diagnostic purposes, it's needed when cli is ran by
unprivileged user who most likely has no write access to the
canonical log file.
Change-Id: Ib9d1a31711966ff1efe2592fbc0a911820cf8ee3
BUG: 3242
Reviewed-on: http://review.gluster.com/95
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
-rw-r--r-- | cli/src/cli.c | 41 | ||||
-rw-r--r-- | cli/src/cli.h | 3 |
2 files changed, 28 insertions, 16 deletions
diff --git a/cli/src/cli.c b/cli/src/cli.c index 50a6c1853..932869038 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -199,27 +199,21 @@ glusterfs_ctx_defaults_init (glusterfs_ctx_t *ctx) static int -logging_init (glusterfs_ctx_t *ctx) +logging_init (struct cli_state *state) { - int ret = 0; - cmd_args_t *cmd_args = NULL; + char *log_file = state->log_file ? state->log_file : + DEFAULT_CLI_LOG_FILE_DIRECTORY "/cli.log"; - cmd_args = &ctx->cmd_args; - - /* CLI should not have something to DEBUG after the release, - hence defaulting to INFO loglevel */ - cmd_args->log_level = GF_LOG_INFO; - - ret = gf_asprintf (&cmd_args->log_file, - DEFAULT_CLI_LOG_FILE_DIRECTORY "/cli.log"); - - if (gf_log_init (cmd_args->log_file) == -1) { + if (gf_log_init (log_file) == -1) { fprintf (stderr, "ERROR: failed to open logfile %s\n", - cmd_args->log_file); + log_file); return -1; } - gf_log_set_loglevel (cmd_args->log_level); + /* CLI should not have something to DEBUG after the release, + hence defaulting to INFO loglevel */ + gf_log_set_loglevel ((state->log_level == -1) ? GF_LOG_INFO : + state->log_level); return 0; } @@ -350,6 +344,20 @@ cli_opt_parse (char *opt, struct cli_state *state) return 0; } + oarg = strtail (opt, "log-file="); + if (oarg) { + state->log_file = oarg; + return 0; + } + + oarg = strtail (opt, "log-level="); + if (oarg) { + state->log_level = glusterd_check_log_level(oarg); + if (state->log_level == -1) + return -1; + return 0; + } + return -1; } @@ -405,6 +413,7 @@ cli_state_init (struct cli_state *state) state->remote_host = "localhost"; + state->log_level = -1; tree = &state->tree; tree->state = state; @@ -618,7 +627,7 @@ main (int argc, char *argv[]) if (ret) goto out; - ret = logging_init (ctx); + ret = logging_init (&state); if (ret) goto out; diff --git a/cli/src/cli.h b/cli/src/cli.h index b8db0bec8..d3e1fc21b 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -109,6 +109,9 @@ struct cli_state { int remote_port; int mode; int await_connected; + + char *log_file; + gf_loglevel_t log_level; }; struct cli_local { |