admin管理员组文章数量:1415673
I'm trying to use Log4Net in my .NET 8 application
This is my log4net config:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="RollingXMLFile" />
</root>
<appender name="RollingXMLFile" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file value="C:\\AppPath\\Log.txt" />
<appendToFile value="true" />
<maximumFileSize value="5000KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] [%logger{2}] - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
</log4net>
When I try to run the application, I only see entries for ERROR
and CRITICAL
levels. Every other level is ignored.
Log4Net worked fine for my .NET 4.8 application. Is there any setting/configuration I am missing for .NET 8?
I'm trying to use Log4Net in my .NET 8 application
This is my log4net config:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="RollingXMLFile" />
</root>
<appender name="RollingXMLFile" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file value="C:\\AppPath\\Log.txt" />
<appendToFile value="true" />
<maximumFileSize value="5000KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] [%logger{2}] - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
</log4net>
When I try to run the application, I only see entries for ERROR
and CRITICAL
levels. Every other level is ignored.
Log4Net worked fine for my .NET 4.8 application. Is there any setting/configuration I am missing for .NET 8?
Share Improve this question edited Feb 28 at 2:22 Zhi Lv 22k1 gold badge27 silver badges37 bronze badges asked Feb 12 at 20:37 user3865946user3865946 536 bronze badges 6 | Show 1 more comment1 Answer
Reset to default 0code image Please let me know if this works
Based on your code, you can refer to the following sample (it works well on my side):
Create a Net 8 MVC application and install the following package via NuGet:
<ItemGroup> <PackageReference Include="log4net" Version="3.0.4" /> <PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="8.0.0" /> </ItemGroup>
Create a
log4net.config
config file in the application’s root folder<?xml version="1.0" encoding="utf-8"?> <log4net> <root> <level value="ALL" /> <appender-ref ref="RollingXMLFile" /> </root> <appender name="RollingXMLFile" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <file value="app.txt" /> <appendToFile value="true" /> <maximumFileSize value="5000KB" /> <maxSizeRollBackups value="2" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] [%logger{2}] - %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="FATAL" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> </appender> </log4net>
Create a Services folder, and add a
Log4netExtensions.cs
class in the Service folder:public static class Log4netExtensions { public static void AddLog4net(this IServiceCollection services, string log4netconfig) { XmlConfigurator.Configure(new FileInfo(log4netconfig)); services.AddSingleton(LogManager.GetLogger(typeof(Program))); } }
In the Program.cs file, register the Log4Net service use the following code:
builder.Logging.AddLog4Net("log4net.config");
In the controller, inject the logger and add logs:
public class HomeController : Controller { private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("This is a default informational log."); _logger.LogDebug("This is a default LogDebug log."); _logger.LogWarning("This is a default LogWarning log."); _logger.LogError("This is a default LogError log."); _logger.LogCritical("This is a default LogCritical log."); return View(); }
The result as below: in the application folder, find the app.txt file from bin\debug\net8.0 folder.
本文标签: aspnet coreLog4Net not logging information in NET 8Stack Overflow
版权声明:本文标题:asp.net core - Log4Net not logging information in .NET 8 - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745203658a2647524.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
log4net.Util.LogLog.InternalDebugging
property to true. – stuartd Commented Feb 27 at 15:30