Files
Gen_Hack-and-Slash-Roguelite/Client/Assets/Scripts/Logging/UnityLogger.cs

67 lines
2.0 KiB
C#

using Managers;
using Serilog;
using UnityEngine;
using Utils;
using SerilogLogger = Serilog.Core.Logger;
namespace Logging
{
public class UnityLogger : Singleton<UnityLogger>, ILaunchManager
{
private bool _initialized = false;
private readonly SerilogLogger _logger = new LoggerConfiguration()
.WriteTo.File("Logs/UnityLog.txt")
.CreateLogger();
public void Init()
{
if (_initialized) return;
Application.logMessageReceivedThreaded += OnLogMessageReceived;
_initialized = true;
}
public void Clear()
{
}
public string StepDescription => "初始化日志";
private void OnLogMessageReceived(string logString, string stackTrace, LogType type)
{
switch (type)
{
case LogType.Assert:
{
_logger.Warning("\nContent: {0}", logString);
break;
}
case LogType.Log:
{
_logger.Information("\nContent: {0}", logString);
break;
}
case LogType.Warning:
{
_logger.Warning("\nContent: {0}", logString);
break;
}
case LogType.Error:
{
_logger.Error("\nContent: {0}\nStackTrace:\n{1}", logString, stackTrace[..^1]);
break;
}
case LogType.Exception:
{
_logger.Fatal("\nContent: {0}\nStackTrace:\n{1}", logString, stackTrace[..^1]);
break;
}
default:
{
_logger.Information("\nContent: {0}", logString);
break;
}
}
}
}
}