2023-03-26 04:06:25 +03:00
|
|
|
|
using System.Text;
|
|
|
|
|
using NLog;
|
2022-08-21 03:50:38 +03:00
|
|
|
|
using NLog.Config;
|
2023-04-07 05:25:08 +03:00
|
|
|
|
using NLog.Extensions.Logging;
|
2023-03-26 04:06:25 +03:00
|
|
|
|
using NLog.LayoutRenderers;
|
2022-08-21 03:50:38 +03:00
|
|
|
|
using NLog.Targets;
|
2023-04-07 05:25:08 +03:00
|
|
|
|
using ILogger = Microsoft.Extensions.Logging.ILogger;
|
2022-08-21 03:50:38 +03:00
|
|
|
|
|
|
|
|
|
namespace NAPS2;
|
|
|
|
|
|
2023-04-07 05:25:08 +03:00
|
|
|
|
public static class NLogConfig
|
2022-08-21 03:50:38 +03:00
|
|
|
|
{
|
2023-04-07 05:25:08 +03:00
|
|
|
|
public static ILogger CreateLogger()
|
2022-08-21 03:50:38 +03:00
|
|
|
|
{
|
2023-03-26 04:06:25 +03:00
|
|
|
|
LayoutRenderer.Register<CustomExceptionLayoutRenderer>("exception");
|
2022-08-21 03:50:38 +03:00
|
|
|
|
var config = new LoggingConfiguration();
|
|
|
|
|
var target = new FileTarget
|
|
|
|
|
{
|
|
|
|
|
FileName = Path.Combine(Paths.AppData, "errorlog.txt"),
|
|
|
|
|
Layout = "${longdate} ${processid} ${message} ${exception:format=tostring}",
|
|
|
|
|
ArchiveAboveSize = 100000,
|
|
|
|
|
MaxArchiveFiles = 5
|
|
|
|
|
};
|
|
|
|
|
config.AddTarget("errorlogfile", target);
|
|
|
|
|
var rule = new LoggingRule("*", LogLevel.Debug, target);
|
|
|
|
|
config.LoggingRules.Add(rule);
|
|
|
|
|
LogManager.Configuration = config;
|
2023-04-07 05:25:08 +03:00
|
|
|
|
return new NLogLoggerFactory().CreateLogger("NAPS2");
|
2022-08-21 03:50:38 +03:00
|
|
|
|
}
|
2023-03-26 04:06:25 +03:00
|
|
|
|
|
|
|
|
|
private class CustomExceptionLayoutRenderer : ExceptionLayoutRenderer
|
|
|
|
|
{
|
|
|
|
|
protected override void AppendToString(StringBuilder sb, Exception ex)
|
|
|
|
|
{
|
2023-04-04 10:23:26 +03:00
|
|
|
|
// Note we don't want to use the AppendDemystified() helper
|
|
|
|
|
// https://github.com/benaadams/Ben.Demystifier/issues/85
|
|
|
|
|
sb.Append(ex.Demystify());
|
2023-03-26 04:06:25 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
2022-08-21 03:50:38 +03:00
|
|
|
|
}
|