.NET 6环境下log4net无法写入数据库日志的问题求助
.NET 6环境下log4net无法写入数据库日志的问题求助
我现在在.NET 6项目里尝试用log4net把错误/警告日志写入数据库,但折腾了好久都没成功,连Microknights这类第三方包都试过了,数据库里还是啥都没有。
调试的时候明明都命中了对应的方法,也没抛出任何异常,实在搞不懂哪里出问题了😭
下面是我的配置文件和Program.cs代码,麻烦各位帮忙看看是不是漏了什么配置?
log4net.config配置文件
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <root> <level value="ALL"></level> <appender-ref ref="AdoNetAppender"></appender-ref> </root> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1" /> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionStringName value="ConnectionStringDB" /> <commandText value="INSERT INTO dbo.Log4NetLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\web-log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="50000KB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> </layout> </appender> </log4net> <connectionStrings> <add name="ConnectionStringDB" connectionString="Data Source=mydatabase;Initial Catalog=mycatalog;User Id=user;Password=password;TrustServerCertificate=true" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
Program.cs代码片段
var builder = WebApplication.CreateBuilder(args); XmlConfigurator.Configure(new FileInfo("log4net.config")); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddMemoryCache(); builder.Services.AddHttpContextAccessor(); builder.Host.ConfigureServices(services => { //...services configuration // 此处省略其他服务配置代码 }); // Log4Net builder.Host.ConfigureLogging(log => { log.AddLog4Net("log4net.config"); log.SetMinimumLevel(LogLevel.Warning); });
备注:内容来源于stack exchange,提问作者Basilicus
相关产品推荐
相关产品推荐

