I am using Microsoft.Extensions.Logging.Log4Net.AspNetCore . It should be straight-forward, but no log file is created and I ran out of ideas.
Minimal example (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
}
Relevant infos from the .csproj file:
<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>
In the log4net.config file, also tried adding <file value="logfile.log" />
under appender
.
Solution given by @pfx in the comments:
Assuming the configuration gets hooked up; use the log4net.Appender.FileAppender instead of the log4net.Appender.DebugAppender; the
DebugAppender
doesn't write to file.
This means that the log4net.config
needs to change like so:
<?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>
And also, loggerFactory.AddLog4Net();
doesn't seem to automatically go find log4net.config
(as it might be understood from the project's documentation). Instead, you must specify loggerFactory.AddLog4Net("log4net.config");
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.