我指的是优秀的帖子:
Log4Net, how to add a custom field to my logging
但它并没有给我整个解决方案。
记录像“这是一个测试”这样的字符串没问题,但是如果我想记录一个变量,它就响应(null)。
这是我的剪辑代码无效:
log4net.GlobalContext.Properties["versionid"] = Variables.IDVERSION;
这是我工作的剪辑代码:
log4net.GlobalContext.Properties["versionid"] = " This is a test";
虽然,IDVERSION是我的代码c#中系统更新的公共财产。
有谁知道如何解决这个问题?我想我已接近解决方案。
答案 0 :(得分:5)
目前你打电话给我:
log4net.GlobalContext.Properties["versionid"] = Variables.IDVERSION;
该属性将在当时保留Variables.IDVERSION
的值。它不会自动跟踪Variables.IDVERSION
变量的更新。
因此,如果您稍后在代码中设置Variables.IDVERSION
,则需要再次对Properties["versionid"]
进行分配。
答案 1 :(得分:0)
当log4net评估上下文属性时,它会调用属性值的.ToString()
方法。因此,如果您将引用作为值,则可以拥有动态属性值(我相信您的idversion
字段是值类型,例如Int?)。
有关详细信息,请参阅https://logging.apache.org/log4net/release/manual/contexts.html