C# 我的自定义日志管理器有问题
以下是我的情况:我有一个库项目,目标是覆盖log4net,并使用自定义appender集中日志。我有以下课程:C# 我的自定义日志管理器有问题,c#,.net,log4net,C#,.net,Log4net,以下是我的情况:我有一个库项目,目标是覆盖log4net,并使用自定义appender集中日志。我有以下课程: myCustomLogManager CustomLog ICustomLog 在myCustomLogManager中,我得到了以下信息: public class myCustomLogManager { public static ICustomLog GetLogger(System.Type t) { return new Custo
myCustomLogManager
CustomLog
ICustomLog
在myCustomLogManager中,我得到了以下信息:
public class myCustomLogManager
{
public static ICustomLog GetLogger(System.Type t)
{
return new CustomLog(t);
}
// Other stuff
}
我的自定义日志:
class CustomLog : ICustomLog
{
private static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public CustomLog(System.Type t)
{
log = LogManager.GetLogger(t);
}
public void Debug( string message, Exception e)
{
log.Debug(message, e);
}
}
在我的控制台应用程序项目中,在每个类中,我声明:
private static readonly ICustomLog logger = myCustomLogManager.GetLogger(typeof(myClass));
当我登录myClass时,没问题。但是如果我使用另一个我也登录的类(比如myOtherClass),我未来在myClass中的日志的记录器名称将具有值“myOtherClass”。为了说明问题,下面是一个输出示例:
- [Info]myProject.myClass:“来自myClass的日志!”
- [Info]myProject.myOtherClass:“来自myOtherClass的日志!”
- [Info]myProject.myOtherClass:“来自myClass的第二个日志!!”
感谢阅读和您的帮助:-)使
CustomLog
中的日志成为非静态的:
private ILog log;
(也无需将其初始化为任何内容)
通过有一个静态字段,实际上只有一个记录器,因此当您使用日志管理器为第二类获取“新”记录器时,它会发生更改。嗨,Stefan,非常感谢它的工作。虽然这很合乎逻辑,但当我调试时,我在存储库log4net中观察日志记录者,那里有我所有的日志记录者。也许这就是为什么我没有想到这个静态日志。再次感谢!