已启用log4net,但未创建任何文件

时间:2015-01-07 20:45:18

标签: c# dll log4net

我已经看过如何使用log4net并获得配置文件。我丢失了这个配置文件,现在我无法让它工作。出于某种原因,配置它的人在app.config中拥有配置信息时无法使其工作,因此他将其放在输出文件夹中的log4net.config中。

然后他在程序启动时调用了它:

        var logConfig = Path.Combine(Path.GetDirectoryName(typeof(App).Assembly.Location), "log4net.config");
        var configStream = new FileInfo(logConfig);
          log4net.Config.XmlConfigurator.Configure(configStream);

它完美无缺。

现在我让它在一个新的控制台项目中完美地工作了。但是我的所有项目都是另一个应用程序的插件,因此我的项目类型是由其他应用程序(称为Revit)加载的类库。

无论如何,所以我知道我可以登录,但是无法让它工作...... 这是我使用的log4net.config:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="logs\" />
    <datePattern value="dd.MM.yyyy'.log'" />
    <staticLogFileName value="false" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="RollingFileAppender"/>
  </root>
</log4net>

我想记录内容的每个类都声明了类级别的ILog实例。 像这样:

static private ILog _logger = LogManager.GetLogger(typeof(Program));

ILog实例报告已启用所有日志记录(调试等),但没有创建任何文件。

我还需要做其他事吗?

我疯了! 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您似乎尝试了几种不同的方法来配置log4net。如果一个失败,最好的选择是启用log4net调试以查看您的记录器是否正在工作/崩溃。在你的app.config中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>

...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

Log4net FAQ

答案 1 :(得分:0)

在App.config文件中,您应该添加此代码以注册log4net部分处理程序并生成日志

<configuration>
  <configSections>
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  ......
</configuration>

或检查AssemblyInfo.cs文件是否包含此代码:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]