【问题标题】:Log4Net issue while using RollingFileAppender使用 RollingFileAppender 时出现 Log4Net 问题
【发布时间】:2013-10-23 17:16:23
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    一些故障排除提示:

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

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

    我认为绑定到 TFS 无关紧要。

    【讨论】:

    • 是的,我检查了那个路径。它指向默认目录,即 bin\debug 目录。但问题仍然存在。我尝试指定绝对路径,但未在该位置创建文件。
    【解决方案2】:

    只需更改这部分

    <appendToFile value="true" />
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多