Mar*_*tin 4 c# logging log4net enterprise-library nlog
我想能够在代码执行进入方法然后退出时进行记录,我想知道是否有人对实现此目的的最佳方法有任何意见?
我知道在运行时注入日志记录代码的AOP方法存在,但我希望有更多的控制,PostSharp似乎是一个付费框架.
你会在这里推荐什么级别的日志记录,我想DEBUG.
记录时间怎么样?该方法进入vs退出需要多长时间
我很想知道其他人在这里做了什么以及你正在使用什么框架.
我正在寻找与log4net.
我正在考虑记录的是参数和方法的名称以及参数的值,并且退出我正在考虑记录我返回的对象的值,如果完全返回的话.
其他人在做什么?
提前致谢
如果您不想使用PostSharp(尽管有免费版本)或者生成了运行时代理,那么静态编织的开源替代方案称为Afterthought.
或者,您可以使用其中一个分析工具.VS Ultimate有一个内置的.
好吧,您当然可以创建一个“一次性记录器”,该记录器可以“自动”记录您选择的方法的信息:
public class EnterExitLogger : IDisposable
{
Logger logger;
string name;
public EnterExitLogger(Logger logger, string name, params object [] args)
{
this.logger = logger;
this.name = name;
this.logger.Debug("Entering {0}", this.name);
int i = 0;
foreach (var a in args)
{
this.logger.Debug("arg[{0}] = {1}", i, a);
i++;
}
}
public void Dispose()
{
this.Logger.Debug("Exiting {0}", this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
public class MyClass
{
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
public void SomeMethod(int x, int y)
{
using (new EnterExitLogger(logger, "SomeMethod", x, y))
{
//Do your work here
}
}
}
Run Code Online (Sandbox Code Playgroud)
这并不是一个特别好的主意,我怀疑我会自己做。另一方面,它确实实现了某种形式的Enter / Exit日志记录,而无需使用AOP。如果您真的想要“自动”输入/退出日志记录,我不确定在没有AOP或企业库版本的情况下如何实现(自动输入/退出)。
显然,在我提出的解决方案中创建和部署EnterExitLogger会产生一些开销,但可能不足以对您产生负面影响。
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |