diff --git a/CHANGELOG.md b/CHANGELOG.md index 58ff9e5a..86621a90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,12 @@ ### Major New features ### API changes on existing features (you may need to change your code) -* clixon_netconf -S is obsolete. Use clixon_netconf -l s instead. +* Application command option -S to clixon_netconf is obsolete. Use `clixon_netconf -l s` instead. ### Minor changes -* Unified log handling for all clicon applications using -l e|o|s|f. +* Unified log handling for all clicon applications using -l e|o|s|f. * The options stand for e:stderr, o:stdout, s: syslog, f:file - * Added file logging (-l f)for cases where neither syslog nor stderr is useful. + * Added file logging (`-l f` or `-l f`) for cases where neither syslog nor stderr is useful. * Obsoleted COMPAT_CLIV and COMPAT_XSL that were optional in 3.7 * Added -l option for clixon_backend for directing syslog to stderr or stdout if running in foreground diff --git a/apps/backend/backend_main.c b/apps/backend/backend_main.c index 76391b10..3b018dcc 100644 --- a/apps/backend/backend_main.c +++ b/apps/backend/backend_main.c @@ -144,7 +144,7 @@ usage(clicon_handle h, " -s \tSpecify backend startup mode: none|startup|running|init (replaces -IRCr\n" " -c \tLoad extra xml configuration, but don't commit.\n" " -g \tClient membership required to this group (default: %s)\n" - " -l \tLog on (s)yslog, std(e)rr or std(o)ut (stderr is default) Only valid if -F, if background syslog is on syslog.\n" + " -l > \tLog on (s)yslog, std(e)rr or std(o)ut (stderr is default) Only valid if -F, if background syslog is on syslog.\n" " -y \tOverride yang spec file (dont include .yang suffix)\n" " -x \tXMLDB plugin\n", argv0, @@ -598,6 +598,10 @@ main(int argc, case 'l': /* Log destination: s|e|o */ if ((logdst = clicon_log_opt(optarg[0])) < 0) usage(h, argv[0]); + if (logdst == CLICON_LOG_FILE && + strlen(optarg)>1 && + clicon_log_file(optarg+1) < 0) + goto done; break; } /* @@ -607,8 +611,6 @@ main(int argc, * XXX: if started in a start-daemon script, there will be irritating * double syslogs until fork below. */ - if ((logdst & CLICON_LOG_FILE) && clicon_log_file(BACKEND_LOGFILE) < 0) - goto done; clicon_log_init(__PROGRAM__, debug?LOG_DEBUG:LOG_INFO, logdst); clicon_debug_init(debug, NULL); diff --git a/apps/cli/cli_main.c b/apps/cli/cli_main.c index 7c8e4559..7ecf20f8 100644 --- a/apps/cli/cli_main.c +++ b/apps/cli/cli_main.c @@ -219,7 +219,7 @@ usage(clicon_handle h, "\t-p \t\tPrint database yang specification\n" "\t-G \t\tPrint CLI syntax generated from dbspec (if CLICON_CLI_GENMODEL enabled)\n" "\t-L \t\tDebug print dynamic CLI syntax including completions and expansions\n" - "\t-l \tLog on (s)yslog, std(e)rr or std(o)ut (stderr is default)\n" + "\t-l > \tLog on (s)yslog, std(e)rr, std(o)ut or (f)ile (stderr is default)\n" "\t-y \tOverride yang spec file (dont include .yang suffix)\n" "\t-c \tSpecify cli spec file.\n" "\t-U \tOver-ride unix user with a pseudo user for NACM.\n", @@ -299,16 +299,18 @@ main(int argc, char **argv) case 'x': /* dump config file as xml (migration from .conf file)*/ dump_configfile_xml++; break; - case 'l': /* Log destination: s|e|o */ + case 'l': /* Log destination: s|e|o|f */ if ((logdst = clicon_log_opt(optarg[0])) < 0) usage(h, argv[0]); + if (logdst == CLICON_LOG_FILE && + strlen(optarg)>1 && + clicon_log_file(optarg+1) < 0) + goto done; break; } /* * Logs, error and debug to stderr or syslog, set debug level */ - if ((logdst & CLICON_LOG_FILE) && clicon_log_file(CLI_LOGFILE) < 0) - goto done; clicon_log_init(__PROGRAM__, debug?LOG_DEBUG:LOG_INFO, logdst); clicon_debug_init(debug, NULL); diff --git a/apps/netconf/netconf_main.c b/apps/netconf/netconf_main.c index 0942986b..817c2c82 100644 --- a/apps/netconf/netconf_main.c +++ b/apps/netconf/netconf_main.c @@ -299,7 +299,7 @@ usage(clicon_handle h, "\t-D\t\tDebug\n" "\t-q\t\tQuiet: dont send hello prompt\n" "\t-f \tConfiguration file (mandatory)\n" - "\t-l \tLog on (s)yslog, (f)ile (syslog is default)\n" + "\t-l > \tLog on std(e)rr, std(o)ut, (s)yslog, (f)ile (syslog is default)\n" "\t-a UNIX|IPv4|IPv6\tInternal backend socket family\n" "\t-u \tInternal socket domain path or IP addr (see -a)\n" "\t-d \tSpecify netconf plugin directory dir (default: %s)\n" @@ -355,13 +355,15 @@ main(int argc, case 'l': /* Log destination: s|e|o */ if ((logdst = clicon_log_opt(optarg[0])) < 0) usage(h, argv[0]); + if (logdst == CLICON_LOG_FILE && + strlen(optarg)>1 && + clicon_log_file(optarg+1) < 0) + goto done; break; } /* * Logs, error and debug to stderr or syslog, set debug level */ - if ((logdst & CLICON_LOG_FILE) && clicon_log_file(NETCONF_LOGFILE) < 0) - goto done; clicon_log_init(__PROGRAM__, debug?LOG_DEBUG:LOG_INFO, logdst); clicon_debug_init(debug, NULL); diff --git a/apps/restconf/restconf_main.c b/apps/restconf/restconf_main.c index 227badda..be5bfd67 100644 --- a/apps/restconf/restconf_main.c +++ b/apps/restconf/restconf_main.c @@ -490,7 +490,7 @@ usage(clicon_handle h, "\t-h \t\tHelp\n" "\t-D \t\tDebug. Log to syslog\n" "\t-f \tConfiguration file (mandatory)\n" - "\t-l \tLog on (s)yslog, (f)ile (syslog is default)\n" + "\t-l > \tLog on (s)yslog, (f)ile (syslog is default)\n" "\t-d \tSpecify restconf plugin directory dir (default: %s)\n" "\t-y \tOverride yang spec file (dont include .yang suffix)\n" "\t-a UNIX|IPv4|IPv6\tInternal backend socket family\n" @@ -543,14 +543,16 @@ main(int argc, case 'l': /* Log destination: s|e|o */ if ((logdst = clicon_log_opt(optarg[0])) < 0) usage(h, argv[0]); + if (logdst == CLICON_LOG_FILE && + strlen(optarg)>1 && + clicon_log_file(optarg+1) < 0) + goto done; break; } /* switch getopt */ /* * Logs, error and debug to stderr or syslog, set debug level */ - if ((logdst & CLICON_LOG_FILE) && clicon_log_file(RESTCONF_LOGFILE) < 0) - goto done; clicon_log_init(__PROGRAM__, debug?LOG_DEBUG:LOG_INFO, logdst); clicon_debug_init(debug, NULL);