Hi Qi,
On 08/07/2018 09:17 AM, QI Fuli wrote:
> When running monitor as a daemon, if the log destination is "standard" or
> a relative path for log file, the messages will not be able to be logged.
> Sometimes, users may not notice that the default log destination is "standard"
> when they start monitor daemon by systemctl, so they will lose messages.
> This patch is used to fix the unfriendly interface. When running monitor as a
> daemon, the default log destination will be changed to syslog. Also, the
> messages
> will be forwarded to syslog if the log destination is a relative path for log
> file.
>
> Signed-off-by: QI Fuli <[email protected]>
> ---
> Documentation/ndctl/ndctl-monitor.txt | 16 +++++++++++++++-
> ndctl/monitor.c | 5 ++++-
> ndctl/monitor.conf | 2 ++
> 3 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/ndctl/ndctl-monitor.txt
> b/Documentation/ndctl/ndctl-monitor.txt
> index 1cba9ea..9a8d76b 100644
> --- a/Documentation/ndctl/ndctl-monitor.txt
> +++ b/Documentation/ndctl/ndctl-monitor.txt
> @@ -67,7 +67,21 @@ OPTIONS
>
> -l <file | syslog | standard>::
> --log=<file | syslog | standard>::
> - Output notifications to <file>, syslog or standard output.
> + Send log messages to the specified destination.
> ++
> +--
> +<file>::
> + Send log messages to specified <file>. When fopen() is not able
> + to open <file>, log messages will be forwarded to syslog.
> +syslog::
> + Send messages to syslog.
> +standard::
> + Send messages to standard output.
> +--
> ++
> +The default log destination is 'syslog' if "--daemon" is specified,
> +otherwise 'standard'. Note that standard and relative path for <file>
> +will not work if "--daemon" is specified.
>
> -c::
> --config-file=::
> diff --git a/ndctl/monitor.c b/ndctl/monitor.c
> index bf1f1d3..2f3d751 100644
> --- a/ndctl/monitor.c
> +++ b/ndctl/monitor.c
> @@ -93,7 +93,8 @@ static void log_file(struct ndctl_ctx *ctx, int priority,
> const char *file,
> f = fopen(monitor.log, "a+");
> if (!f) {
> ndctl_set_log_fn(ctx, log_syslog);
> - err(ctx, "open logfile %s failed\n", monitor.log);
> + err(ctx, "open logfile %s failed, forward messages to syslog\n",
> + monitor.log);
> did_fail = 1;
> notice(ctx, "%s\n", buf);
> goto end;
> @@ -644,6 +645,8 @@ int cmd_monitor(int argc, const char **argv, void *ctx)
> }
>
> if (monitor.daemon) {
Why don't you add './standard' check? Like as:
if (strncmp(monitor.log, "./standard", 10) == 0)
error("daemon doesn't work for 'standard' log option");
goto out;
Thanks,
Masa
> + if (!monitor.log || strncmp(monitor.log, "./", 2) == 0)
> + ndctl_set_log_fn((struct ndctl_ctx *)ctx, log_syslog);
> if (daemon(0, 0) != 0) {
> err((struct ndctl_ctx *)ctx, "daemon start failed\n");
> goto out;
> diff --git a/ndctl/monitor.conf b/ndctl/monitor.conf
> index 857aadf..934e2c0 100644
> --- a/ndctl/monitor.conf
> +++ b/ndctl/monitor.conf
> @@ -38,4 +38,6 @@
> # to standard output (log=standard) or to write into a special file
> (log=<file>)
> # by setting key "log". If this value is in conflict with the value of
> # [--log=<value>] option, this value will be ignored.
> +# Note: Setting value to "standard" or relative path for <file> will not work
> +# when running moniotr as a daemon.
> # log = /var/log/ndctl/monitor.log
>
_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm