Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的自定义日志管理器有问题_C#_.net_Log4net - Fatal编程技术网

C# 我的自定义日志管理器有问题

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

以下是我的情况:我有一个库项目,目标是覆盖log4net,并使用自定义appender集中日志。我有以下课程:

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的第二个日志!!”
这很难解释,我希望我足够清楚,但事实是默认的记录器,在myOtherClass类中完成工作后是myProject.myOtherClass,当我登录myClass类时,不会返回myProject.myClass

我怎样才能解决这个问题


感谢阅读和您的帮助:-)

使
CustomLog
中的
日志成为非静态的:

private ILog log;
(也无需将其初始化为任何内容)


通过有一个静态字段,实际上只有一个记录器,因此当您使用日志管理器为第二类获取“新”记录器时,它会发生更改。

嗨,Stefan,非常感谢它的工作。虽然这很合乎逻辑,但当我调试时,我在存储库log4net中观察日志记录者,那里有我所有的日志记录者。也许这就是为什么我没有想到这个静态日志。再次感谢!