1,添加程式集: Microsoft.Extensions.Logging.Log4Net.AspNetCore
2,配置: 在項目根目錄下建立配置log4net.config配置檔案
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<!-- Define some output appenders -->
<appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
<file value="f:\log\log.txt" />
<!--追加日志内容-->
<appendToFile value="true" />
<!--防止多線程時不能寫Log,官方說線程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--可以為:Once|Size|Date|Composite-->
<!--Composite為Size和Date的組合-->
<rollingStyle value="Composite" />
<!--當備份檔案時,為檔案名加的字尾-->
<datePattern value="yyyyMMdd.txt" />
<!--日志最大個數,都是最新的-->
<!--rollingStyle節點為Size時,隻能有value個日志-->
<!--rollingStyle節點為Composite時,每天有value個日志-->
<maxSizeRollBackups value="20" />
<!--可用的機關:KB|MB|GB-->
<maximumFileSize value="5MB" />
<!--置為true,目前最新日志檔案名永遠為file節中的名字-->
<staticLogFileName value="true" />
<!--輸出級别在INFO和ERROR之間的日志-->
<!--過濾級别 FATAL > ERROR > WARN > INFO > DEBUG-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="FATAL" />
</filter>
<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>
3,C#代碼
配置方式1:
namespace Log4netTest
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logBuilder) =>
{
logBuilder.AddFilter("System", LogLevel.Warning);//過濾掉系統預設的一些日志
logBuilder.AddFilter("Microsoft", LogLevel.Warning);//過濾掉系統預設的一些日志
logBuilder.AddLog4Net(); //注入log4net
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
配置方式2:
namespace Log4netTest
{
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory logger)
{
logger.AddLog4Net();
}
}
}
調用測試:
namespace Log4netTest.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogError("2222222222222222222222222222");
return View();
}
}
}