ASP.NET web ILogger日志记录
1、在不使用第三方的日志库我们可以自己这样实现
选举一个测试类
public class CustomFileLoggerProvider : ILoggerProvider { private readonly string _path; public CustomFileLoggerProvider(string path) { _path = path; Directory.CreateDirectory(Path.GetDirectoryName(_path)); } public ILogger CreateLogger(string categoryName) { return new CustomFileLogger(_path); } public void Dispose() { } } public class CustomFileLogger : ILogger { private readonly string _path; public CustomFileLogger(string path) { _path = path; } public IDisposable BeginScope<TState>(TState state) => null; public bool IsEnabled(LogLevel logLevel) => true; public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) { var logMessage = formatter(state, exception); var logFolder = logLevel switch { LogLevel.Information => "Information", LogLevel.Error => "Error", LogLevel.Warning => "Warning" }; var logFilePath = $"{_path}/{logFolder}/{string.Format("{0:yyyy}{0:MM}{0:dd}", DateTime.Now)}.txt"; // Write logMessage to logFilePath if (!Directory.Exists($"{_path}/{logFolder}")) { Directory.CreateDirectory($"{_path}/{logFolder}"); } if (File.Exists(logFilePath)) { using (StreamWriter writer = File.AppendText(logFilePath)) { writer.WriteLineAsync(logFolder+":"+logMessage); } } else { File.WriteAllTextAsync(logFilePath, logMessage); } } }
接下来在提交依赖注入
builder.Services.AddLogging(loggingBuilder => { //loggingBuilder.ClearProviders(); loggingBuilder.AddProvider(new CustomFileLoggerProvider("D:/Desktop/Logs")); //loggingBuilder.AddFilter(string.Format("Logs/Error/{0:yyyy}-{0:MM}-{0:dd}.log", DateTime.Now), LogLevel.Warning); //loggingBuilder.AddFilter(string.Format("Logs/Info/{0:yyyy}-{0:MM}-{0:dd}.log", DateTime.Now), LogLevel.Error); //loggingBuilder.AddConsole(); //loggingBuilder.AddFile(o => o.Path = @"D:\Desktop\新建文件夹 (2)");//o => o.Path = @"D:\Desktop\logs\Warning" });
最后就可以正常使用了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix