首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅当调用XmlConfigurator.Configure()时,log4net才有效

仅当调用XmlConfigurator.Configure()时,log4net才有效
EN

Stack Overflow用户
提问于 2013-05-27 12:22:25
回答 2查看 46.7K关注 0票数 26

我理解this question has been asked several times,但不幸的是,我一直无法使我的日志配置正常工作。我一定是在什么地方犯了个小错误。

我有一个.NET 4.5MVC4/EF5Web应用程序,我正在尝试让日志工作起来。该解决方案有两个项目,一个用于DAO和模型对象,另一个用于网站。App.Config文件如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="RebuildingTogetherEntities" connectionString="stuff..."/>
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <log4net configSource="Log.config" />
</configuration>

同样的log4net部分也被复制到Web.Config文件中。

我在两个AssemblyInfo.cs文件中都添加了以下内容:

代码语言:javascript
复制
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log.config", Watch = true)]

对于两个Log.Config文件,“复制到输出目录”都设置为true。

使日志附加到输出文件的唯一方法似乎是在第一个日志语句运行之前调用XmlConfigurator.Configure()。我想当我第一次获得记录器时,我可以写一个facade来做这件事,但这感觉是错误的。

如何在不手动调用XmlConfigurator的情况下初始化记录器?

EN

回答 2

Stack Overflow用户

发布于 2015-09-25 01:06:19

我也遇到过完全相同的问题。正如您正确地指出的那样,当您在AssemblyInfo.cs中包含该行时,不应该显式地调用XmlConfigurator。当第一次使用log4net时,问题出现在没有这行的assebmly中。在我的例子中,我使用的是Topshelf.Log4Net NuGet包,我的应用程序记录的第一个日志行是通过它。

您可以在应用程序的早期记录一行,或者如果不需要记录任何内容,请执行我所做的操作,并在应用程序的入口点添加以下代码

代码语言:javascript
复制
LogManager.GetLogger(typeof(Program));
票数 34
EN

Stack Overflow用户

发布于 2013-05-27 23:20:54

如果使用以下命令,则不需要手动调用XmlConfigurator:

代码语言:javascript
复制
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log.config", Watch = true)]

然而,你必须添加标签到你所有的dlls (所有的assambly.cs文件)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16766236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档