我需要一个Log4net包装器 - 在大型应用程序中暴露给许多不同的组件.我显然希望在记录时保留类和方法名称,但我不会将类型等传递给我的包装器.
我已经看到它在另一个问题中用smt 完成,如下所示:
MethodBase methodBase = new StackTrace().GetFrame(1).GetMethod();
this.log.Debug(methodBase.Name + " : " + message);
Run Code Online (Sandbox Code Playgroud)
这并不理想,因为它没有使用开箱即用的Log4Net功能.
我想知道人们在做切线之前是如何做到这一点的,然后想出一些非常复杂的东西.任何指针(链接/资源/样本)赞赏!
我在我的控制台应用程序中使用log4net,我log.Error("Message to log");在if/else结构中多次使用.
我的应用程序必须返回一个代码,该代码指定在应用程序运行期间是否发生错误(0→ok,1→至少发生1个错误).
有没有办法询问log4net是否记录了错误,例如:
bool b = LogManager.AtLeastOneErrorHasBeenLogged;
Run Code Online (Sandbox Code Playgroud) 根据这篇 log4net文章,您应该检查是否在任何Log.Debug语句之前启用了调试以消除语句构造成本.是否有更好的替代方法,总是必须在任何日志语句之前检查是否(Log.IsDebugEnabled)?
Log4Net示例:
if (log.IsDebugEnabled)
{
log.Debug("This is entry number: " + i );
}
Run Code Online (Sandbox Code Playgroud)
我不想支付语句构造的开销成本,但也不想在每个日志语句之前检查.