zz
This commit is contained in:
74
GlobalTorch/API/Util/GlobalLogManager.cs
Normal file
74
GlobalTorch/API/Util/GlobalLogManager.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System.Collections.Generic;
|
||||
using Global.API.Util;
|
||||
using Global.Shared.Logging;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.Targets;
|
||||
|
||||
namespace Global
|
||||
{
|
||||
public static class GlobalLogManager
|
||||
{
|
||||
private static readonly Dictionary<string, FileTarget> Targets = new Dictionary<string, FileTarget>();
|
||||
|
||||
public static IPluginLogger GetLogger(string name)
|
||||
{
|
||||
return new TorchLogger(name);
|
||||
}
|
||||
|
||||
public static void PatchToUseCustomFileLogger(string name, string filename = null)
|
||||
{
|
||||
if (filename == null) filename = name;
|
||||
var rules = LogManager.Configuration.LoggingRules;
|
||||
for (var i = rules.Count - 1; i >= 0; i--)
|
||||
if (rules[i].NameMatches(name))
|
||||
rules.RemoveAtFast(i);
|
||||
|
||||
var logTarget = Targets.ComputeIfAbsent(filename, fn => new FileTarget(filename)
|
||||
{
|
||||
FileName = $"Logs/{fn}-latest.log",
|
||||
Layout = "${var:logStamp} ${logger}: ${var:logContent}",
|
||||
ArchiveOldFileOnStartup = true,
|
||||
ArchiveNumbering = ArchiveNumberingMode.DateAndSequence,
|
||||
ArchiveDateFormat = "dd-MM-yyyy",
|
||||
ArchiveFileName = $"Logs/Archive/{fn}-{{###}}.zip",
|
||||
EnableArchiveFileCompression = true
|
||||
});
|
||||
var debugRule = new LoggingRule(name, LogLevel.Debug, logTarget);
|
||||
rules.Insert(0, debugRule);
|
||||
if (name == "Keen" && GlobalPlugin.LegacyConfig.LogKeenToConsole)
|
||||
{
|
||||
var consoleRule = new LoggingRule(name, LogLevel.Info,
|
||||
LogManager.Configuration.FindTargetByName("console"));
|
||||
consoleRule.Targets.Add(LogManager.Configuration.FindTargetByName("wpf"));
|
||||
rules.Insert(0, consoleRule);
|
||||
}
|
||||
|
||||
LogManager.Configuration.Reload();
|
||||
LogManager.ReconfigExistingLoggers();
|
||||
}
|
||||
|
||||
public static Logger GetCustomFileLogger(string name, string filename = null)
|
||||
{
|
||||
if (filename == null) filename = name;
|
||||
var rules = LogManager.Configuration.LoggingRules;
|
||||
var logTarget = Targets.ComputeIfAbsent(filename, fn => new FileTarget(filename)
|
||||
{
|
||||
FileName = $"Logs/{fn}-latest.log",
|
||||
Layout = "${var:logStamp} ${logger}: ${var:logContent}",
|
||||
ArchiveOldFileOnStartup = true,
|
||||
ArchiveNumbering = ArchiveNumberingMode.DateAndSequence,
|
||||
ArchiveDateFormat = "dd-MM-yyyy",
|
||||
ArchiveFileName = $"Logs/Archive/{fn}-{{###}}.zip",
|
||||
EnableArchiveFileCompression = true
|
||||
});
|
||||
|
||||
var logRule = new LoggingRule(name, LogLevel.Debug, logTarget);
|
||||
|
||||
rules.Insert(0, logRule);
|
||||
|
||||
LogManager.Configuration.Reload();
|
||||
return LogManager.GetLogger(name);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user