Script Logger V2

by ForgedInFire

Contributors

ForgedInFire

Script Logger V2

Summary

Shared named-logger library for Arma Reforger mods with severity filtering, console output, mandatory master logging, optional secondary logs, retention controls, and simple runtime configuration.

Description

ScriptLogger

Shared named-logger library for Arma Reforger by ForgedInFire.


NAMED LOGGER API

Request a logger by name. GetLogger() creates it on first use and returns the same instance on subsequent requests.

FiF_SL_Logger logger = FiF_SL_SLogger.GetLogger("RUPV2");

logger.Info("Player rank loaded", "RUPV2_RankStorage", "LoadRank");
logger.Error("Unable to load rank", "RUPV2_RankStorage", "LoadRank");

No configuration prefab, component, or world entity is required.


LOGGER SETTINGS

Each logger begins with the ScriptLogger defaults.

ConsoleEnabled
Default: true
Route accepted entries to engine Print.

DebugEnabled
Default: false
Allow DEBUG, VERBOSE, and SPAM messages.

MinimumLevel
Default: NORMAL
Minimum accepted severity.

RetentionLines
Default: 10000
Secondary-log retention.

LoggerLogEnabled
Default: false
Enable secondary-log output.

LoggerLogPath
Default: empty
When secondary logging is enabled, an empty path derives:

FiF_Logs/<logger name>.log

Configure a logger with typed setters:

logger.SetConsoleEnabled(false);
logger.SetDebugEnabled(true);
logger.SetMinimumLevel(LogLevel.DEBUG);
logger.SetRetentionLines(5000);
logger.SetLoggerLogEnabled(true);
logger.SetLoggerLogPath("FiF_Logs/RUPV2.log");


BULK OVERRIDES

Settings may also be supplied using FiF_SL_Overrides:

FiF_SL_Overrides overrides = new FiF_SL_Overrides();

overrides.Insert("ConsoleEnabled", "false");
overrides.Insert("DebugEnabled", "true");
overrides.Insert("MinimumLevel", "DEBUG");
overrides.Insert("RetentionLines", "1000");
overrides.Insert("LoggerLogEnabled", "true");
overrides.Insert("LoggerLogPath", "FiF_Logs/RUPV2.log");

FiF_SL_Logger logger =
    FiF_SL_SLogger.GetLogger("RUPV2", overrides);

MinimumLevel accepts:

SPAM
VERBOSE
DEBUG
NORMAL
WARNING
ERROR
FATAL

Overrides may also be applied with:

logger.SetOverrides(overrides);


SETTINGS AND OVERRIDES

Inspect configuration with:

logger.GetSettings();
logger.GetDefaults();
logger.GetOverrides();

GetOverrides() returns settings that currently differ from the ScriptLogger defaults.

Restore one setting or all settings:

logger.ResetSetting("MinimumLevel");
logger.ResetSettings();


LOG LEVELS

logger.Spam("message");
logger.Verbose("message");
logger.Debug("message");
logger.Info("message");
logger.Warning("message");
logger.Error("message");
logger.Fatal("message");

DebugEnabled controls SPAM, VERBOSE, and DEBUG eligibility. MinimumLevel is then applied to accepted messages.

Workbench may filter lower-severity console entries even when ScriptLogger accepts and writes them to file.


MASTER LOG

Every accepted message is always written to:

$profile:FiF_Logs/ScriptLogger.log

The master log path and retention are controlled internally and cannot be disabled by individual loggers.

Example:

2026-09-23 10:05:58 [DEBUG] [RUPV2] RankStorage::LoadRank::Player rank loaded


SECONDARY LOGS

A logger may additionally write to its own secondary log:

logger.SetLoggerLogPath("FiF_Logs/RUPV2.log");
logger.SetLoggerLogEnabled(true);

The message is then written to both the master and secondary logs.

Multiple named loggers may share a secondary file while retaining their logger identities.

FiF_SL_Logger input = FiF_SL_SLogger.GetLogger("MyMod.Input");
FiF_SL_Logger output = FiF_SL_SLogger.GetLogger("MyMod.Output");

input.SetLoggerLogPath("FiF_Logs/MyMod_IO.log");
output.SetLoggerLogPath("FiF_Logs/MyMod_IO.log");

input.SetLoggerLogEnabled(true);
output.SetLoggerLogEnabled(true);


FILE HANDLING

Secondary paths are relative to $profile:.

ScriptLogger handles retention, temporary-file replacement, backup protection, and file-write failures internally.


AUTHOR

Author: ForgedInFire
Contact: [email protected]

License

Arma Public License (APL)

Version
1.0.1
Game Version
1.8.0.13
Version size
4.98 KB
Created
23.09.2026
Last Modified
23.09.2026
ID
6A6EE7DE83CA0B4B