假设我有一些像这样的应用程序代码:
public void DoSomething()
{
if (SomethingBad)
throw new SomethingBadException("You did something bad");
// Keep going...
}
我正在使用log4net,理想情况下我想记录该异常,并提出以下警告:
我已经能够编写一些实用程序代码来完成大部分项目符号,但最后一项涉及捕获调用堆栈的内容正在逃避我。
有没有办法完成所有这些?我愿意编写自定义log4net扩展。我也在使用Ninject的log4net扩展来构建记录器,如果有帮助的话。
我是在叫错树吗?还有另一种方法可以让我到达我想去的地方吗?答案 0 :(得分:2)
在寻找一种简单的方法来消除评论中提到的额外框架问题时,我遇到了Environment.StackTrace。这可能更适合你想要的东西。
原始答案如下。
不知道log4net,但我希望下面会有你想要的东西。
void ThrowLoggedException<T>() where T : Exception
{
try
{
throw new T("You did something bad");
}
catch (Exception ex)
{
// Log event here.
throw;
}
}
答案 1 :(得分:0)
使用NLog - http://nlog-project.org/
在更高级的Log4j样式输出布局中,它提供了许多关于要记录哪些数据的选项。
我将它与Log2Console结合使用,以实时查看记录的内容。