.NET 5环境下使用log4net无法写入数据库日志如何解决
问题解决方案
ConnectionType配置优化
你当前指定了具体版本号的ConnectionType配置容易因为.NET程序集绑定重定向机制出现加载失败问题,直接移除版本、公钥等限定字段即可,修改后配置如下:<connectionType value="System.Data.SqlClient.SqlConnection, System.Data.SqlClient" />运行时会自动加载你已经通过Nuget安装的4.8.3版本System.Data.SqlClient程序集。
Logger调用校验
你当前配置的DatabaseLogger是命名Logger,只有代码中显式调用LogManager.GetLogger("DatabaseLogger")时才会触发数据库写入操作。如果你需要所有日志都同时写入文件和数据库,可以在log4net.config中增加根Logger配置:<root> <level value="ALL" /> <appender-ref ref="JsonFileLogger" /> <appender-ref ref="DatabaseLogger" /> </root>DateTime参数格式修正
你当前对log_date参数配置的字符串格式布局容易出现数据库DateTime类型转换失败问题,直接使用log4net原生的RawTimeStampLayout传递DateTime类型参数即可避免转换错误:<parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter>开启内部调试定位问题
如果以上修改后仍无法写入,开启log4net内部调试日志可直接定位具体错误原因,在log4net配置加载代码前加入以下代码即可:log4net.Util.LogLog.InternalDebugging = true;内部日志会输出到控制台,可直接查看数据库写入环节的具体报错信息。
内容的提问来源于stack exchange,提问作者burakergun
相关产品推荐
相关产品推荐

