c# - ASP 中的 Log4Net:记录消息时不创建文件
问题描述
我正在使用Microsoft.Extensions.Logging.Log4Net.AspNetCore。它应该是直截了当的,但没有创建日志文件,我没有想法。
最小示例(Startup.cs):
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddLog4Net();
var logger = loggerFactory.CreateLogger("Global exception logger");
logger.LogError("test");
// Result: no file seems to be created under \bin\Debug\netcoreapp2.0
}
.csproj 文件中的相关信息:
<TargetFramework>netcoreapp2.0</TargetFramework>
...
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="2.1.0" />
...
<Content Update="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
log4net.config:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="DebugAppender" type="log4net.Appender.DebugAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="DebugAppender" />
</root>
</log4net>
在 log4net.config 文件中,也尝试<file value="logfile.log" />
在appender
.
解决方案
@pfx 在评论中给出的解决方案:
假设配置已连接;使用 log4net.Appender.FileAppender 而不是 log4net.Appender.DebugAppender;不
DebugAppender
写入文件。
这意味着log4net.config
需要像这样改变:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender" >
<file value="C:\path\to\your\logfile.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="FileAppender" />
</root>
</log4net>
而且,loggerFactory.AddLog4Net();
似乎不会自动查找log4net.config
(从项目文档中可以理解)。相反,您必须指定loggerFactory.AddLog4Net("log4net.config");
.
推荐阅读
- php - Laravel - 如果给定数组中不存在,则从数据库中删除记录
- floating-point - 为什么这里需要接口才能获得正确的结果
- javascript - 使用 date.getMonth() 时,为什么我的结果是 3?
- data-visualization - 使用参数表过滤数据
- python - 如何在包含链接列表的表格中提取可下载链接,并抓取多个页面
- python - User 类型的对象在 DRF 中不是 JSON 可序列化的
- google-apps-script - Google 数据洞察中的报告复选框问题
- java - 如何在 Java AWS S3 SDK 预签名 URL 中设置策略条件
- r - 在数据框中查找具有百分比值的列,并在更改列名时将值转换为数字
- c# - IIS在c#中使用的发布文件夹