Files
RaindropViewer/Assets/Raindrop/Bootstrap/LoggingConfiguration.cs
T
2022-02-06 13:09:04 +08:00

76 lines
2.9 KiB
C#

using System.IO;
using Disk;
using log4net;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;
using Raindrop.Services.Bootstrap;
using UnityEngine;
public static class LoggingConfiguration
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void Configure()
{
// var key = "log4net.Internal.Debug";
// string value = true.ToString();
//
// try
// {
// var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// var settings = configFile.AppSettings.Settings;
// if (settings[key] == null)
// {
// settings.Add(key, value);
// }
// else
// {
// settings[key].Value = value;
// }
// configFile.Save(ConfigurationSaveMode.Modified);
// ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
// }
// catch (ConfigurationErrorsException)
// {
// Debug.Log("Error writing app settings");
// }
//
Debug.Log("Application is configuring the global logger. \n" +
"We are using configuration file at: "
+ $"{DirectoryHelpers.GetInternalCacheDir()}/log4net.xml");
// var res = XmlConfigurator.Configure(new FileInfo($"{DirectoryHelpers.GetInternalCacheDir()}/log4net.xml"));
ConfigureLoggers(
Path.Combine(DirectoryHelpers.GetInternalCacheDir(), "log.txt"));
}
public static void ConfigureLoggers(string filepath)
{
// log4net.Config.XmlConfigurator.Configure();
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
//1. log to unity console.
var unityDebugAppender = new UnityDebugAppender();
unityDebugAppender.Layout = new PatternLayout("%date{HH:mm:ss} [%level] - %message");
//appender.Layout = new PatternLayout("%timestamp [%thread] %-5level - %message%newline");
// BasicConfigurator.Configure(unityDebugAppender);
hierarchy.Root.AddAppender(unityDebugAppender);
var logFileAppender = new RollingFileAppender();
logFileAppender.Layout = new PatternLayout("%date{HH:mm:ss} [%level] - %message%newline");
logFileAppender.File = filepath;
logFileAppender.AppendToFile = true;
logFileAppender.RollingStyle = RollingFileAppender.RollingMode.Size;
logFileAppender.MaxSizeRollBackups = 10;
logFileAppender.MaxFileSize = 250 * 1000; // 250KB
logFileAppender.StaticLogFileName = true;
logFileAppender.ActivateOptions();
// XmlConfigurator.Configure();
hierarchy.Root.AddAppender(logFileAppender);
hierarchy.Configured = true;
}
}