67 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |