logging/ascii: Support leftover log rotation in non-supervisor setups

We have a use case to rotate leftover log files in a non-supervisor
setup. There doesn't seem to be a strict requirement on supervisor
functionality. Allow enabling leftover log rotation through
LogAscii::enable_leftover_log_rotation and redef this for the
logger node in a supervisor setup individually.
This commit is contained in:
Arne Welzel 2020-10-01 20:55:34 +02:00
parent c8545c85d8
commit 1f5ab4878b
4 changed files with 12 additions and 4 deletions

View file

@ -37,6 +37,8 @@ function supervisor_rotation_format_func(ri: Log::RotationFmtInfo): Log::Rotatio
redef Log::rotation_format_func = supervisor_rotation_format_func;
redef LogAscii::enable_leftover_log_rotation = T;
@else
## Use the cluster's archive logging script.

View file

@ -26,6 +26,12 @@ export {
## This option is also available as a per-filter ``$config`` option.
const use_json = F &redef;
## If true, enable leftover log rotation using .shadow files.
##
## This requires a positive rotation_interval to be configued
## to have an effect.
const enable_leftover_log_rotation = F &redef;
## If true, valid UTF-8 sequences will pass through unescaped and be
## written into logs.
##

View file

@ -16,7 +16,6 @@
#include "Func.h"
#include "RunState.h"
#include "supervisor/Supervisor.h"
#include "logging/Manager.h"
#include "threading/SerialTypes.h"
@ -450,7 +449,7 @@ bool Ascii::DoInit(const WriterInfo& info, int num_fields, const threading::Fiel
fname += ext;
bool use_shadow = Supervisor::ThisNode() && info.rotation_interval > 0;
bool use_shadow = BifConst::LogAscii::enable_leftover_log_rotation && Info().rotation_interval > 0;
if ( use_shadow )
{
@ -667,7 +666,7 @@ bool Ascii::DoRotate(const char* rotated_path, double open, double close, bool t
return false;
}
bool use_shadow = Supervisor::ThisNode() && Info().rotation_interval > 0;
bool use_shadow = BifConst::LogAscii::enable_leftover_log_rotation && Info().rotation_interval > 0;
if ( use_shadow )
{
@ -744,7 +743,7 @@ static std::vector<LeftoverLog> find_leftover_logs()
void Ascii::RotateLeftoverLogs()
{
if ( ! Supervisor::ThisNode() )
if ( ! BifConst::LogAscii::enable_leftover_log_rotation )
return;
// Log file crash recovery: if there's still leftover shadow files from the

View file

@ -11,6 +11,7 @@ const set_separator: string;
const empty_field: string;
const unset_field: string;
const use_json: bool;
const enable_leftover_log_rotation: bool;
const enable_utf_8: bool;
const json_timestamps: JSON::TimestampFormat;
const gzip_level: count;