Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# 如何让Log4Net读取它';从包装器类在其自己的类库项目中进行的相关配置?_C#_Log4net - Fatal编程技术网

C# 如何让Log4Net读取它';从包装器类在其自己的类库项目中进行的相关配置?

C# 如何让Log4Net读取它';从包装器类在其自己的类库项目中进行的相关配置?,c#,log4net,C#,Log4net,我有以下要求 为了简单起见,假设我的解决方案由两个项目组成 包装Log4Net功能的类库项目 MVC web应用程序项目作为调用应用程序到类库记录器方法,而这些方法反过来应该调用log4net实际方法 我想在类库app.config文件中指定log4net config,或者在这个项目中指定一个xml文件 我在这个帖子上读到了simlar杂志 但是在我的ClassLibrary项目的Assembly.info文件中放置以下两行的解决方案对我不起作用 [assembly: log4net.Conf

我有以下要求

为了简单起见,假设我的解决方案由两个项目组成

  • 包装Log4Net功能的类库项目
  • MVC web应用程序项目作为调用应用程序到类库记录器方法,而这些方法反过来应该调用log4net实际方法
  • 我想在类库app.config文件中指定log4net config,或者在这个项目中指定一个xml文件

    我在这个帖子上读到了simlar杂志

    但是在我的ClassLibrary项目的Assembly.info文件中放置以下两行的解决方案对我不起作用

    [assembly: log4net.Config.Repository("ClassLibrary1")]
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "ClassLibrary1.config", Watch = true)]
    
    因为Log4Net无法找到相关的配置

    对于记录,我的类库程序集的名称=ClassLibrary1

    我从我的mvc web应用程序项目中引用了这个库

    你知道为什么解决方案2是线程中的吗

    他不为我工作吗

    编辑:


    我的程序流程是这样的

    我的MVC应用程序启动

    Unity通过构造函数注入成功地注入了我的log4netwrapper的一个单例实例

    然后在action方法中,我通过包装器调用logger。在包装构造函数中,我创建了XmlConfigurator

    请注意,在调用时,我没有提供fileinfo对象作为读取配置项的路径。仅在我的包装程序集中用于此目的

    [assembly: log4net.Config.Repository("ClassLibrary1")] 
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "ClassLibrary1.config", 
                                              Watch = true)]. 
    
    这里有什么解决方案吗?

    如果你看一下,上面写着:

    因此,如果使用配置属性,则必须调用log4net 允许它读取属性。一个简单的电话 LogManager.GetLogger将导致调用程序集上的属性 被读取和处理因此,必须进行日志记录 在应用程序启动期间尽早调用,以及 当然是在加载和调用任何外部程序集之前。

    问题是,当您在MVC项目启动中执行此操作时,程序集属性位于外部程序集ClassLibrary1中

    如果您使用的是
    XmlConfigurator.Configure(…)
    ,正如您链接到的答案中所示,它将起作用。

    如果您查看以下内容:

    因此,如果使用配置属性,则必须调用log4net 允许它读取属性。一个简单的电话 LogManager.GetLogger将导致调用程序集上的属性 被读取和处理因此,必须进行日志记录 在应用程序启动期间尽早调用,以及 当然是在加载和调用任何外部程序集之前。

    问题是,当您在MVC项目启动中执行此操作时,程序集属性位于外部程序集ClassLibrary1中


    如果您使用的是
    XmlConfigurator.Configure(…)
    ,正如您链接到的答案中所示,它将起作用。

    很抱歉,这里没有您的确切步骤。我的程序流程如下所示。我的mvc应用程序启动。unity通过构造函数注入成功地注入了我的log4netwrapper的一个单例实例。然后在action方法中,我通过包装器调用logger。在包装构造函数中,我创建了xmlconfigurator。请注意,在调用时,我没有提供fileinfo对象作为读取配置项的路径。仅在我的包装程序集[assembly:log4net.Config.Repository(“ClassLibrary1”)][assembly:log4net.Config.xmlconfigulator(ConfigFile=“ClassLibrary1.Config”,Watch=true)]中用于此目的。这里有解决方案吗?对不起,我没有得到你的确切步骤。我的程序流程是这样的。我的mvc应用程序启动。unity通过构造函数注入成功地注入了我的log4netwrapper的一个单例实例。然后在action方法中,我通过包装器调用logger。在包装构造函数中,我创建了xmlconfigurator。请注意,在调用时,我没有提供fileinfo对象作为读取配置项的路径。仅在我的包装程序集[assembly:log4net.Config.Repository(“ClassLibrary1”)][assembly:log4net.Config.xmlconfigulator(ConfigFile=“ClassLibrary1.Config”,Watch=true)]中用于此目的。这里有什么解决办法吗?