我在这个项目中,所有方法都使用记录器和字符串来说明发生了什么。例如doFoo(Logger log,String doingBar,Object foo,Object bar)。在那之后,通常会有一些日志消息打印到更多的BAR +。
所以对象foo和bar只是需要的东西,另外两个只是用于日志消息,他们说它们是这样的,所以你可以看到在你来到这个类之前发生了什么。这是一个好习惯吗?
我习惯于每个类都有自己的记录器,你可以通过记录必要的内容来跟踪系统中发生的事情,然后有一些sessionId,以便你可以跟踪发生的事情。
感谢您的投入!
答案 0 :(得分:0)
我不认为这是最好的方法。
我会为每个类设置一个单独的记录器,因此该类上的所有方法都共享它,并且记录器可以将类信息添加到跟踪中(如类名)。
如果您想在所有类之间共享,也可以使用单例记录器。
如果您只记录方法入口/出口并使用IoC容器,您可能需要查看拦截器,这可以让您轻松地执行相同的操作。
答案 1 :(得分:0)
尝试ReflectInsight。实际上,它们只是为了这个目的而有一个名为TraceMethod的方法。
static void SomeMethod()
{
ReflectInsight ri1 = RILogManager.Default;
using (ri1.TraceMethod(MethodBase.GetCurrentMethod))
{
// your code ...
ri1.SendWarning("some warning");
ri1.SendJSON("some json object", jobj);
}
}
如果您不喜欢升序代码,如上所述,您可以将PostSharp扩展库用于使用AOP的RI。
免责声明:我不是直接为ReflectSoftware工作,但我是帮助构建ReflectInsight的主要开发人员之一。我的主要目标是帮助任何具有日志框架需求的人,并且只响应适用于此类的stackoverflow问题。