C# 在不更改实际行的情况下将文本追加到log.info

C# 在不更改实际行的情况下将文本追加到log.info,c#,log4net,C#,Log4net,目前,我的代码中有许多行log.info()。现在我想知道是否有一种方法可以在不更改代码中所有行的情况下向该行添加额外变量。例如,假设我的代码中有类似的内容 int trackno; log.info("Object has passed stage 1"); log.info("Object has passed stage 2"); ... 现在有什么方法可以在不更改实际日志代码的情况下在日志中打印trackno。我正在寻找另一种方法来做这件事 log.info("Object has p

目前,我的代码中有许多行log.info()。现在我想知道是否有一种方法可以在不更改代码中所有行的情况下向该行添加额外变量。例如,假设我的代码中有类似的内容

int trackno;
log.info("Object has passed stage 1");
log.info("Object has passed stage 2");
...
现在有什么方法可以在不更改实际日志代码的情况下在日志中打印trackno。我正在寻找另一种方法来做这件事

log.info("Object has passed stage 1 - Trackno = " + trackno );

你可以试试像

log.Info(string.format("Object has passed stage {0}",trackno.toString()));

您可以将方法包装在语句周围,如下所示:

private void LogInfoObjectPassed(int trackno, int stage)
{
    log.info("Object has passed stage " + stage + " - Trackno = " + trackno);
}

您只是更改传递到log.info方法的参数,而不是更改日志代码。为什么不更改参数?因为我的文档上有很多行,这会很耗时。我只是好奇是否有更好的方法。您可以随时扩展log.Info类并添加可选参数,因此只需更改需要额外信息的参数。我更喜欢使用
log.InfoFormat(“对象已通过阶段{0}”,trackno)。我知道你说过你不想更改日志代码,但不确定有没有办法。或者,如果您希望始终在每个日志消息中记录某些内容,则可以使用ThreadContext变量。