2

我正在使用 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

4 回答 4

2

一些故障排除提示:

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

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

我不认为绑定到 TFS 是相关的。

于 2011-02-10T10:07:21.873 回答
1

只需更改此部分

<appendToFile value="true" />
于 2011-04-13T12:18:24.717 回答
0

也许您的应用程序已经使用了一些声明性配置,这些配置隐藏在代码中。搜索类似这样的内容: [assembly: log4net.Config.XmlConfigurator(Watch=true)]

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

于 2011-02-10T11:51:18.443 回答
0

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

于 2011-02-10T13:22:14.340 回答