70 lines
1.5 KiB
C#
70 lines
1.5 KiB
C#
|
|
using System;
|
||
|
|
using System.IO;
|
||
|
|
using Nebula.Launcher.Services.Logging;
|
||
|
|
|
||
|
|
namespace Nebula.Launcher.Services;
|
||
|
|
|
||
|
|
[ServiceRegister]
|
||
|
|
public class DebugService : IDisposable
|
||
|
|
{
|
||
|
|
public ILogger Logger;
|
||
|
|
|
||
|
|
private static string LogPath = Path.Combine(FileService.RootPath, "log");
|
||
|
|
public DateTime LogDate = DateTime.Now;
|
||
|
|
private FileStream LogStream;
|
||
|
|
private StreamWriter LogWriter;
|
||
|
|
|
||
|
|
public DebugService(ILogger logger)
|
||
|
|
{
|
||
|
|
Logger = logger;
|
||
|
|
|
||
|
|
if (!Directory.Exists(LogPath))
|
||
|
|
Directory.CreateDirectory(LogPath);
|
||
|
|
|
||
|
|
var filename = String.Format("{0:yyyy-MM-dd}.txt", DateTime.Now);
|
||
|
|
|
||
|
|
LogStream = File.Open(Path.Combine(LogPath, filename),
|
||
|
|
FileMode.Append, FileAccess.Write);
|
||
|
|
LogWriter = new StreamWriter(LogStream);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Debug(string message)
|
||
|
|
{
|
||
|
|
Log(LoggerCategory.Debug, message);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Error(string message)
|
||
|
|
{
|
||
|
|
Log(LoggerCategory.Error, message);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Log(string message)
|
||
|
|
{
|
||
|
|
Log(LoggerCategory.Log, message);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Dispose()
|
||
|
|
{
|
||
|
|
LogWriter.Dispose();
|
||
|
|
LogStream.Dispose();
|
||
|
|
}
|
||
|
|
|
||
|
|
private void Log(LoggerCategory category, string message)
|
||
|
|
{
|
||
|
|
Logger.Log(category, message);
|
||
|
|
SaveToLog(category, message);
|
||
|
|
}
|
||
|
|
|
||
|
|
private void SaveToLog(LoggerCategory category, string message)
|
||
|
|
{
|
||
|
|
LogWriter.WriteLine($"[{category}] {message}");
|
||
|
|
LogWriter.Flush();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public enum LoggerCategory
|
||
|
|
{
|
||
|
|
Log,
|
||
|
|
Debug,
|
||
|
|
Error
|
||
|
|
}
|