You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C# .NET中使用Log4Net Appender无法存储JSON格式日志,缺少什么?

解决Log4Net无法生成JSON格式日志的问题

针对你遇到的JSON日志文件无法生成的问题,按以下步骤排查修复:

1. 确认安装log4net.Ext.Json包

你的配置中使用了log4net.Ext.Json库的SerializedLayout,但如果未通过NuGet安装该依赖,日志组件会无法识别这个布局类型,导致JSON Appender失效。

  • 使用NuGet包管理器安装:搜索log4net.Ext.Json并完成安装
  • 或使用命令行:
    # .NET Framework
    Install-Package log4net.Ext.Json
    # .NET Core/.NET 5+
    dotnet add package log4net.Ext.Json
    

2. 移除SerializedLayout中的conversionPattern配置

SerializedLayout是用于序列化日志对象为JSON的布局,不需要conversionPattern(这是PatternLayout专属的配置项),多余的配置会导致布局初始化失败。修改后的JSON Appender布局部分如下:

<layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
  <decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
</layout>

3. 检查日志目录的写入权限

确保程序对C:\Users\user1\source\repos\Log4netExample\Log4netExample\Logs目录有写入权限:

  • 桌面/控制台程序通常默认有当前用户权限;若是ASP.NET/IIS程序,需给应用程序池身份分配该目录的写入权限
  • 可临时改用相对路径测试,比如<file value="Logs/logger.log" />,规避绝对路径的权限问题

4. 确认log4net配置已正确加载

确保程序启动时成功加载log4net.config:

  • 在AssemblyInfo.cs中添加(适用于.NET Framework):
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
    
  • 或在程序入口手动加载(适用于所有.NET版本):
    log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
    

5. 自定义JSON日志输出(可选)

如果需要指定JSON字段,可在SerializedLayout中添加member节点定义序列化属性,示例:

<layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
  <decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
  <member value="date:date" />
  <member value="thread:thread" />
  <member value="level:level" />
  <member value="logger:logger" />
  <member value="message:message" />
</layout>

完成以上步骤后重启程序,JSON格式的logger.log应该会正常生成。

内容的提问来源于stack exchange,提问作者Tushar Kawade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:59:56