mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
130 lines
3.5 KiB
C#
130 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace EggLink.DanhengServer.Util
|
|
{
|
|
public class Logger
|
|
{
|
|
private readonly string ModuleName;
|
|
private static FileInfo LogFile;
|
|
|
|
public Logger(string moduleName)
|
|
{
|
|
ModuleName = moduleName;
|
|
}
|
|
|
|
public void Log(string message, LoggerLevel level)
|
|
{
|
|
Console.Write("[");
|
|
Console.ForegroundColor = ConsoleColor.DarkCyan;
|
|
Console.Write(DateTime.Now.ToString("HH:mm:ss"));
|
|
Console.ResetColor();
|
|
Console.Write("] ");
|
|
Console.Write("[");
|
|
Console.ForegroundColor = ConsoleColor.DarkGray;
|
|
Console.Write(ModuleName);
|
|
Console.ResetColor();
|
|
Console.Write("] ");
|
|
Console.Write("[");
|
|
Console.ForegroundColor = (ConsoleColor)level;
|
|
Console.Write(level);
|
|
Console.ResetColor();
|
|
Console.WriteLine("] " + message);
|
|
|
|
var logMessage = $"[{DateTime.Now:HH:mm:ss}] [{ModuleName}] [{level}] {message}";
|
|
WriteToFile(logMessage);
|
|
}
|
|
|
|
public void Info(string message, Exception e = null)
|
|
{
|
|
Log(message, LoggerLevel.INFO);
|
|
if (e != null)
|
|
{
|
|
Log(e.Message, LoggerLevel.INFO);
|
|
Log(e.StackTrace, LoggerLevel.INFO);
|
|
}
|
|
}
|
|
|
|
public void Warn(string message, Exception e = null)
|
|
{
|
|
Log(message, LoggerLevel.WARN);
|
|
if (e != null)
|
|
{
|
|
Log(e.Message, LoggerLevel.WARN);
|
|
Log(e.StackTrace, LoggerLevel.WARN);
|
|
}
|
|
}
|
|
|
|
public void Error(string message, Exception e = null)
|
|
{
|
|
Log(message, LoggerLevel.ERROR);
|
|
if (e != null)
|
|
{
|
|
Log(e.Message, LoggerLevel.ERROR);
|
|
Log(e.StackTrace, LoggerLevel.ERROR);
|
|
}
|
|
}
|
|
|
|
public void Fatal(string message, Exception e = null)
|
|
{
|
|
Log(message, LoggerLevel.FATAL);
|
|
if (e != null)
|
|
{
|
|
Log(e.Message, LoggerLevel.FATAL);
|
|
Log(e.StackTrace, LoggerLevel.FATAL);
|
|
}
|
|
}
|
|
|
|
public void Debug(string message, Exception e = null)
|
|
{
|
|
Log(message, LoggerLevel.DEBUG);
|
|
if (e != null)
|
|
{
|
|
Log(e.Message, LoggerLevel.DEBUG);
|
|
Log(e.StackTrace, LoggerLevel.DEBUG);
|
|
}
|
|
}
|
|
|
|
public static void SetLogFile(FileInfo file)
|
|
{
|
|
LogFile = file;
|
|
}
|
|
|
|
public static void WriteToFile(string message)
|
|
{
|
|
if (LogFile == null)
|
|
{
|
|
throw new Exception("LogFile is not set");
|
|
}
|
|
using (StreamWriter sw = LogFile.AppendText())
|
|
{
|
|
sw.WriteLine(message);
|
|
}
|
|
}
|
|
|
|
public static Logger GetByClassName()
|
|
{
|
|
return new Logger(new StackTrace().GetFrame(1).GetMethod().ReflectedType.Name);
|
|
}
|
|
}
|
|
|
|
public enum LoggerLevel
|
|
{
|
|
INFO = ConsoleColor.Cyan,
|
|
WARN = ConsoleColor.Yellow,
|
|
ERROR = ConsoleColor.Red,
|
|
FATAL = ConsoleColor.DarkRed,
|
|
DEBUG = ConsoleColor.Blue
|
|
}
|
|
|
|
public class LoggerLevelHelper
|
|
{
|
|
|
|
}
|
|
}
|