Syslog: added log rotation settings

This commit is contained in:
bergware
2019-02-26 20:32:36 +01:00
parent 19c0747f2f
commit 44b11908a9
3 changed files with 82 additions and 8 deletions
+47 -5
View File
@@ -22,11 +22,16 @@ $syslog = @(array)parse_ini_file('/boot/config/rsyslog.cfg');
span.span{display:inline-block;width:224px}
</style>
<script>
function localFolder(state) {
if (state) $('#local_folder').show(); else $('#local_folder').hide();
function localFolder(local,time) {
if (local) $('#local_folder').show(time); else $('#local_folder').hide(time);
}
function logOptions(log,time) {
if (log) $('#log_options').show(time); else $('#log_options').hide(time);
}
$(function(){
localFolder(document.syslog.local_server.value);
logOptions(document.syslog.log_rotation.value);
});
</script>
@@ -35,11 +40,11 @@ $(function(){
<input type="hidden" name="#command" value="/webGui/scripts/rsyslog_config">
Local syslog server:
: <span class="span"><select name="local_server" class="narrow" size="1" onchange="localFolder(this.value)">
: <span class="span"><select name="local_server" class="narrow" onchange="localFolder(this.value,'slow')">
<?=mk_option($syslog['local_server'], "", "Disabled")?>
<?=mk_option($syslog['local_server'], "1", "Enabled")?>
</select></span>
<select name="server_protocol" class="narrow" size="1">
<select name="server_protocol" class="narrow">
<?=mk_option($syslog['server_protocol'], "udp", "UDP")?>
<?=mk_option($syslog['server_protocol'], "tcp", "TCP")?>
<?=mk_option($syslog['server_protocol'], "both", "Both")?>
@@ -53,7 +58,7 @@ Local syslog server:
<div markdown="1" id="local_folder" style="display:none">
Local syslog folder:
: <select name="server_folder" class="narrow" size="1">
: <select name="server_folder" class="narrow">
<?=mk_option(0,'','&lt;custom&gt;','disabled')?>
<?foreach ($shares as $share){echo mk_option($syslog['server_folder'], '/mnt/user/'.$share['name'], $share['name']);}?>
</select>
@@ -61,6 +66,43 @@ Local syslog folder:
> Select the share folder where the syslogs will be stored.
> It is recommended that you use a share located on the cache drive to prevent array disk spinups.
Syslog LOG rotation:
: <select name="log_rotation" class="narrow" onchange="logOptions(this.value,'slow')">
<?=mk_option($syslog['log_rotation'], "", "Disabled")?>
<?=mk_option($syslog['log_rotation'], "1", "Enabled")?>
</select>
> By default LOG rotation is disabled and will create a single LOG file of unlimited size.
>
> Enable LOG rotation to limit the size of the LOG file and specify the number of files to keep in the rotation scheme.
<div markdown="1" id="log_options" style="display:none">
Syslog LOG maximum file size:
: <select name="log_size" class="narrow">
<?=mk_option($syslog['log_size'], '1M', '1 MB')?>
<?=mk_option($syslog['log_size'], '2M', '2 MB')?>
<?=mk_option($syslog['log_size'], '5M', '5 MB')?>
<?=mk_option($syslog['log_size'], '10M', '10 MB')?>
<?=mk_option($syslog['log_size'], '20M', '20 MB')?>
<?=mk_option($syslog['log_size'], '50M', '50 MB')?>
<?=mk_option($syslog['log_size'], '100M', '100 MB')?>
<?=mk_option($syslog['log_size'], '200M', '200 MB')?>
<?=mk_option($syslog['log_size'], '500M', '500 MB')?>
</select>
> Specifies the maximum LOG size. When exceeded LOG rotation will occur.
Syslog LOG number of files:
: <select name="log_files" class="narrow">
<?=mk_option($syslog['log_files'], '1', '1')?>
<?=mk_option($syslog['log_files'], '2', '2')?>
<?=mk_option($syslog['log_files'], '3', '3')?>
<?=mk_option($syslog['log_files'], '4', '4')?>
</select>
> Specifies the number of additional LOG files to keep in the rotation scheme.
</div>
</div>
Remote syslog server:
@@ -1,6 +1,13 @@
#!/bin/bash
ETC=/etc/rsyslog.conf
USB=/boot/config/rsyslog.local
LOG=/etc/logrotate.d/rsyslog.local
if grep -qP '^#\*\.\* \?remote$' $ETC; then
sed -ri 's/^#(\*\.\* \?remote)$/\1/' $ETC
/etc/rc.d/rc.rsyslogd restart &> /dev/null
fi
if [[ -f $USB ]]; then
cp -f $USB $LOG
chmod 644 $LOG
fi
+28 -3
View File
@@ -1,7 +1,9 @@
#!/bin/bash
CONF=/boot/config/rsyslog.conf
CFG=/boot/config/rsyslog.conf
ETC=/etc/rsyslog.conf
USB=/boot/config/rsyslog.local
LOG=/etc/logrotate.d/rsyslog.local
# read settings
source /boot/config/rsyslog.cfg
@@ -57,11 +59,34 @@ else
fi
# copy conf to flash (read settings on reboot)
todos <$ETC >$CONF
todos <$ETC >$CFG
# keep local logging disabled at startup
# disk mount and disk unmount events are used to start/stop logging
sed -ri 's/^(\*\.\* \?remote)/#\1/' $CONF
sed -ri 's/^(\*\.\* \?remote)/#\1/' $CFG
# update syslog rotation
if [[ -n $local_server && -n $log_rotation ]]; then
cat <<- EOF > $LOG
$server_folder/*.log {
su nobody users
missingok
create 0666 nobody users
size $log_size
rotate $log_files
sharedscripts
postrotate
/bin/kill -HUP \$(cat /var/run/rsyslogd.pid 2>/dev/null) 2>/dev/null || true
endscript
}
EOF
chmod 644 $LOG
# keep copy on flash
cp -f $LOG $USB
else
# clean up
rm -f $LOG $USB
fi
# update syslog daemon
/etc/rc.d/rc.rsyslogd restart &> /dev/null