summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/frr.logrotate22
-rw-r--r--redhat/frr.logrotate8
-rw-r--r--tools/etc/frr/frr.conf5
-rw-r--r--tools/etc/rsyslog.d/45-frr.conf36
4 files changed, 63 insertions, 8 deletions
diff --git a/debian/frr.logrotate b/debian/frr.logrotate
index 0dd68fb257..9a1fa2149b 100644
--- a/debian/frr.logrotate
+++ b/debian/frr.logrotate
@@ -7,11 +7,21 @@
create 640 frr frrvty
postrotate
- for i in zebra bgpd ripd ospfd ripngd ospf6d isisd pimd; do
- if [ -e /var/run/frr/$i.pid ] ; then
- kill -USR1 `cat /var/run/frr/$i.pid`
- fi
-
- done
+ pid=$(lsof -t -a -c /syslog/ /var/log/frr/* 2>/dev/null)
+ if [ -n "$pid" ]
+ then # using syslog
+ kill -HUP $pid
+ fi
+ # in case using file logging; if switching back and forth
+ # between file and syslog, rsyslogd might still have file
+ # open, as well as the daemons, so always signal the daemons.
+ # It's safe, a NOP if (only) syslog is being used.
+ for i in babeld bgpd eigrpd isisd ldpd nhrpd ospf6d ospfd \
+ pimd ripd ripngd zebra ; do
+ if [ -e /var/run/frr/$i.pid ] ; then
+ pids="$pids $(cat /var/run/frr/$i.pid)"
+ fi
+ done
+ [ -n "$pids" ] && kill -USR1 $pids
endscript
}
diff --git a/redhat/frr.logrotate b/redhat/frr.logrotate
index f43a86efe7..25a5587787 100644
--- a/redhat/frr.logrotate
+++ b/redhat/frr.logrotate
@@ -1,3 +1,11 @@
+/var/log/frr/frr.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -HUP `cat /var/run/*syslog*.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
/var/log/frr/zebra.log {
notifempty
missingok
diff --git a/tools/etc/frr/frr.conf b/tools/etc/frr/frr.conf
index 2cd05bf803..61f7a65620 100644
--- a/tools/etc/frr/frr.conf
+++ b/tools/etc/frr/frr.conf
@@ -1,2 +1,3 @@
-log file /var/log/frr/frr.log
-log timestamp precision 6
+# default to using syslog. /etc/rsyslog.d/45-frr.conf places the log
+# in /var/log/frr/frr.log
+log syslog informational
diff --git a/tools/etc/rsyslog.d/45-frr.conf b/tools/etc/rsyslog.d/45-frr.conf
new file mode 100644
index 0000000000..ff7cd48318
--- /dev/null
+++ b/tools/etc/rsyslog.d/45-frr.conf
@@ -0,0 +1,36 @@
+# The lines below cause all FRR daemons and process to go
+# to /var/log/frr/frr.log, then drops the message so it does
+# not also go to /var/log/syslog, so the messages are not duplicated
+
+$outchannel frr_log,/var/log/frr/frr.log
+if $programname == 'babeld' or
+ $programname == 'bgpd' or
+ $programname == 'eigrpd' or
+ $programname == 'frr' or
+ $programname == 'isisd' or
+ $programname == 'ldpd' or
+ $programname == 'nhrpd' or
+ $programname == 'ospf6d' or
+ $programname == 'ospfd' or
+ $programname == 'pimd' or
+ $programname == 'ripd' or
+ $programname == 'ripngd' or
+ $programname == 'watchfrr' or
+ $programname == 'zebra'
+ then :omfile:$frr_log
+
+if $programname == 'babeld' or
+ $programname == 'bgpd' or
+ $programname == 'eigrpd' or
+ $programname == 'frr' or
+ $programname == 'isisd' or
+ $programname == 'ldpd' or
+ $programname == 'nhrpd' or
+ $programname == 'ospf6d' or
+ $programname == 'ospfd' or
+ $programname == 'pimd' or
+ $programname == 'ripd' or
+ $programname == 'ripngd' or
+ $programname == 'watchfrr' or
+ $programname == 'zebra'
+ then stop