使用RollingFileAppender时出现Log4Net问题

时间:2011-02-10 09:58:43

标签: c# .net tfs log4net log4net-configuration

我正在使用log4net在我的应用程序中执行日志记录。我把我的项目绑定到了TFS。我在log4net周围创建了一个包装器,如下所示:

public static class TestLogger
{
    private static readonly ILog log = LogManager.GetLogger("TestLogger");

    static TestLogger()
    {
        log4net.Config.XmlConfigurator.Configure();
    }

    public static void LogInfo(string information)
    {
        log.Info(information);
    }

    public static void LogError(string erroMessage, Exception ex)
    {
        log.Error(erroMessage, ex);
    }

    public static void LogWarnings(string warningText)
    {
        log.Warn(warningText);            
    }
}

当我尝试从VS2010执行程序时,我发现没有创建日志文件。我创建了另一个项目(未绑定到TFS)并执行一些日志记录,它成功并在应用程序的bin / debug中创建了该文件。

以下是我的log4net配置文件。

<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
    <file value="Log.txt" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="3" />
    <maximumFileSize value="1GB" />
    <layout type="log4net.Layout.PatternLayout, log4net">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <logger name="TestLogger">
    <level value="ALL" />
    <appender-ref ref="RollingFileAppender" />
  </logger>
</log4net>

有人可以帮忙解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

一些问题排查提示:

  1. 在配置文件中定义日志文件的绝对路径。

  2. 检查代码中的当前工作目录(Environment.CurrentDirectory)。如果您在VS调试器下运行,并且尚未在项目属性的“调试”选项卡中指定工作目录,则可能默认为当前的Visual Studio工作目录。

  3. 我不认为与TFS绑定是相关的。

答案 1 :(得分:1)

只需更改此部分

<appendToFile value="true" />

答案 2 :(得分:0)

也许你的应用程序已经使用了一些declarative configuration,这是代码中的某个地方。搜索类似这样的内容: [assembly: log4net.Config.XmlConfigurator(Watch=true)]

否则尝试抓住log4net存储库 log4net.LogManager.GetRepository()。它返回ILoggerRepository类型的对象。您可以尝试使用此对象将有关当前log4net配置的一些信息写入控制台或其他位置。

答案 3 :(得分:0)

尝试按照here说明打开内部调试。这应该告诉你问题是什么。如果内部调试没有输出,那么您可能没有配置log4net。