需要nuGet安装Serilog和File库
using System.Diagnostics;
using Serilog;
public static class LoggerHelper
{
// 定义一个静态的 Logger 实例,确保只初始化一次
private static readonly ILogger Logger;
static LoggerHelper()
{
Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(@"Logs\Log.txt",
rollingInterval: RollingInterval.Day, // 按天的日志
shared: true, // 设置为 true,避免多个日志文件
retainedFileCountLimit: 31) // 保留最近31个文件
.CreateLogger();
}
public static void WriteTextLog(string log)
{
try
{
// 获取堆栈信息
var stackTrace = new StackTrace(true);
var frame = stackTrace.GetFrame(1); // 获取调用者信息
var callingMethod = frame.GetMethod();
var callingType = callingMethod.DeclaringType;
// 记录日志
Logger.Debug($"{callingType.Name}.{callingMethod.Name}: {log}");
}
catch (Exception ex)
{
// 在获取堆栈信息或记录日志时发生错误,记录异常信息
Logger.Error(ex, "Error in WriteTextLog method");
}
}
}