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"
});
复制代码

最后就可以正常使用了

posted @   ¥东方不败  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示