集成 log4net
log4net 就很熟悉了, 虽然可以把各种日志都打到数据库中, 但是感觉最实用的还是日志文件.
所以起手式还是 dotnet cli 命令 dotnet add package log4net
这里提一下, 准备以后有时间了解一下 bower, 如果可以搞定的话, 就玩一下.
然后操作步骤如下文
创建一个文件, 起名叫 log4net.config.
在项目起始方法中加载 log4net.
创建一个全局异常类, 其实可以不用这个类的, 但是感觉还不错就加进来了.
- log4net.config
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <!-- This section contains the log4net configuration settings -->
- <log4net>
- <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
- <file value="logfile/" />
- <appendToFile value="true" />
- <rollingStyle value="Composite" />
- <staticLogFileName value="false" />
- <datePattern value="yyyyMMdd'.log'" />
- <maxSizeRollBackups value="10" />
- <maximumFileSize value="1MB" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
- </layout>
- </appender>
- <!-- Setup the root category, add the appenders and set the default level -->
- <root>
- <level value="ALL" />
- <appender-ref ref="RollingLogFileAppender" />
- </root>
- </log4net>
- </configuration>
在 Startup 文件中加载 log4net, 其实比原来就多加了三行代码.
这里需要说的就是创建静态 ILoggerRepository 的时候需要导包, 最机智的方法自然就是 dotnet new sln 创建一个解决方案, 把项目填进去, 用 VS 解决这件事.
- public static ILoggerRepository repository{get;set;}
- public Startup(IConfiguration configuration)
- {
- Configuration = configuration;
- // 加载 log4net 日志配置文件
- repository = LogManager.CreateRepository("NETCoreRepository");
- XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
- }
全局异常类
- using log4net;
- using Microsoft.AspNetCore.Mvc.Filters;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace Blog
- {
- public class HttpGlobalExceptionFilter : IExceptionFilter
- {
- private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(HttpGlobalExceptionFilter));
- public void OnException(ExceptionContext context)
- {
- log.Error(context.Exception);
- }
- }
- }
log 的使用方式, 一般情况下吧 log 对象放在基类中就够用了.
- protected static ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(HttpGlobalExceptionFilter));
- log.Info("log test fisish");
来源: https://www.cnblogs.com/hoyu/p/9063675.html