Skip to content

Commit

Permalink
Merge pull request #15168 from mjstapp/daemon_logs
Browse files Browse the repository at this point in the history
lib,vtysh: add per-daemon log file config
  • Loading branch information
ton31337 authored Jan 19, 2024
2 parents 6103c62 + c7f7cf9 commit 2844d09
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 12 deletions.
14 changes: 14 additions & 0 deletions doc/user/basic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,20 @@ Basic Config Commands
deprecated ``log trap`` command) will be used. The ``no`` form of the command
disables logging to a file.

.. clicmd:: log daemon DAEMON file [FILENAME [LEVEL]]

Configure file logging for a single FRR daemon. If you want to log
into a file, please specify ``filename`` as in this example:

::

log daemon bgpd file /var/log/frr/bgpd.log informational

If the optional second argument specifying the logging level is not present,
the default logging level (typically debugging, but can be changed using the
deprecated ``log trap`` command) will be used. The ``no`` form of the command
disables logging to a file for a single FRR daemon.

.. clicmd:: log syslog [LEVEL]

Enable logging output to syslog. If the optional second argument specifying
Expand Down
1 change: 1 addition & 0 deletions lib/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
/grammar_sandbox
/clippy
/defun_lex.c
vtysh_daemons.h
67 changes: 67 additions & 0 deletions lib/log_vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "lib/lib_errors.h"
#include "lib/printfrr.h"
#include "lib/systemd.h"
#include "lib/vtysh_daemons.h"

#include "lib/log_vty_clippy.c"

Expand Down Expand Up @@ -459,6 +460,70 @@ DEFUN (clear_log_cmdline,
return CMD_SUCCESS;
}

/* Per-daemon log file config */
DEFUN (config_log_dmn_file,
config_log_dmn_file_cmd,
"log daemon " DAEMONS_LIST " file FILENAME [<emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>$levelarg]",
"Logging control\n"
"Specific daemon\n"
DAEMONS_STR
"Logging to file\n"
"Logging filename\n"
LOG_LEVEL_DESC)
{
int level = log_default_lvl;
int idx = 0;
const char *d_str;
const char *filename;
const char *levelarg = NULL;

d_str = argv[2]->text;

/* Ignore if not for this daemon */
if (!strmatch(d_str, frr_get_progname()))
return CMD_SUCCESS;

if (argv_find(argv, argc, "file", &idx))
filename = argv[idx + 1]->arg;
else
return CMD_SUCCESS;

if (argc > 5)
levelarg = argv[5]->text;

if (levelarg) {
level = log_level_match(levelarg);
if (level == ZLOG_DISABLED)
return CMD_ERR_NO_MATCH;
}
return set_log_file(&zt_file, vty, filename, level);
}

/* Per-daemon no log file */
DEFUN (no_config_log_dmn_file,
no_config_log_dmn_file_cmd,
"no log daemon " DAEMONS_LIST " file [FILENAME [LEVEL]]",
NO_STR
"Logging control\n"
"Specific daemon\n"
DAEMONS_STR
"Cancel logging to file\n"
"Logging file name\n"
"Logging level\n")
{
const char *d_str;

d_str = argv[3]->text;

/* Ignore if not for this daemon */
if (!strmatch(d_str, frr_get_progname()))
return CMD_SUCCESS;

zt_file.prio_min = ZLOG_DISABLED;
zlog_file_set_other(&zt_file);
return CMD_SUCCESS;
}

DEFPY (config_log_file,
config_log_file_cmd,
"log file FILENAME [<emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>$levelarg]",
Expand Down Expand Up @@ -904,6 +969,8 @@ void log_cmd_init(void)
install_element(CONFIG_NODE, &config_log_monitor_cmd);
install_element(CONFIG_NODE, &no_config_log_monitor_cmd);
install_element(CONFIG_NODE, &config_log_file_cmd);
install_element(CONFIG_NODE, &config_log_dmn_file_cmd);
install_element(CONFIG_NODE, &no_config_log_dmn_file_cmd);
install_element(CONFIG_NODE, &no_config_log_file_cmd);
install_element(CONFIG_NODE, &config_log_syslog_cmd);
install_element(CONFIG_NODE, &no_config_log_syslog_cmd);
Expand Down
10 changes: 10 additions & 0 deletions lib/subdir.am
Original file line number Diff line number Diff line change
Expand Up @@ -540,12 +540,22 @@ EXTRA_DIST += \
BUILT_SOURCES += \
lib/gitversion.h \
lib/route_types.h \
lib/vtysh_daemons.h \
# end

## force route_types.h
$(lib_clippy_OBJECTS): lib/route_types.h
$(lib_libfrr_la_OBJECTS): lib/route_types.h

# force lib_daemons.h
$(lib_libfrr_la_OBJECTS): lib/vtysh_daemons.h

CLEANFILES += lib/vtysh_daemons.h
lib/vtysh_daemons.h:
@$(MKDIR_P) lib
$(PERL) $(top_srcdir)/vtysh/daemons.pl $(vtysh_daemons) > lib/vtysh_daemons.h


AM_YFLAGS = -d -Dapi.prefix=@BISON_OPENBRACE@cmd_yy@BISON_CLOSEBRACE@ @BISON_VERBOSE@

lib/command_lex.h: lib/command_lex.c
Expand Down
1 change: 0 additions & 1 deletion vtysh/.gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
vtysh
vtysh_cmd.c
vtysh_daemons.h

# does not exist anymore - remove 2023-10-04 or so
extract.pl
10 changes: 0 additions & 10 deletions vtysh/subdir.am
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,3 @@ noinst_HEADERS += \
vtysh_vtysh_LDADD = lib/libfrr.la $(LIBCAP) $(LIBREADLINE) $(LIBS) $(LIBPAM)

EXTRA_DIST += vtysh/daemons.pl

BUILT_SOURCES += vtysh/vtysh_daemons.h

# force vtysh_daemons.h
$(vtysh_vtysh_OBJECTS): vtysh/vtysh_daemons.h

CLEANFILES += vtysh/vtysh_daemons.h
vtysh/vtysh_daemons.h:
@$(MKDIR_P) vtysh
$(PERL) $(top_srcdir)/vtysh/daemons.pl $(vtysh_daemons) > vtysh/vtysh_daemons.h
2 changes: 1 addition & 1 deletion vtysh/vtysh.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include "network.h"
#include "filter.h"
#include "vtysh/vtysh.h"
#include "vtysh/vtysh_daemons.h"
#include "lib/vtysh_daemons.h"
#include "log.h"
#include "vrf.h"
#include "libfrr.h"
Expand Down

0 comments on commit 2844d09

Please sign in to comment.