如果你使用 .netCore及以上版本(.net5,.net6,.net7)... 系统默认自带日志中间件(log4net)
对,就是上次java 日志大漏洞的兄弟.......
控制台自动打印日志就是它的功劳
现在我们想存日志文件,怎么办 很简单.
1.在项目中添加日志配置文件 文件名 : log4net.config 不能随意文件名
- "1.0" encoding="utf-8"?>
- <log4net>
-
-
-
- <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
-
-
-
- <file value="D:\APP\SG.ISS.GateSentry.Server\bin\Release\log.txt" />
-
-
-
- <appendToFile value="true" />
-
-
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
-
-
-
- <Encoding value="UTF-8" />
-
-
- <param name="StaticLogFileName" value="false" />
-
-
- <datePattern value="yyyyMMdd".txt"" />
-
-
-
-
- <rollingStyle value="Size" />
-
-
-
-
- <maxSizeRollBackups value="7" />
-
-
- <maximumFileSize value="5MB" />
-
-
- <staticLogFileName value="true" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <layout type="log4net.Layout.PatternLayout">
-
- <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
- layout>
- appender>
-
-
- <root>
- <priority value="ALL"/>
- <level value="ALL"/>
- <appender-ref ref="rollingAppender" />
- root>
- log4net>
2.在 program.cs 里面
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context,loggingBuilder)=> {//通过中间件的方式使用Log4Net
// 因为系统日志会很多
loggingBuilder.AddFilter("System", LogLevel.Warning);
loggingBuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
loggingBuilder.AddLog4Net(); //注册Log4Net 到.Net Core
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup
});
3. NuGet : Microsoft.Extensions.Logging.Log4Net.AspNetCore
它会自动带出安装 log4net
注意对比版本,尽量少的更新已有包