c# - 使用 RollingFileAppender 时出现 Log4Net 问题

标签 c# .net tfs log4net log4net-configuration

我正在使用 log4net 在我的应用程序中执行日志记录。我已将我的项目绑定(bind)到 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 执行程序时,我发现日志文件没有被创建。我创建另一个项目(未绑定(bind)到 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>

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

最佳答案

一些故障排除提示:

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

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

我认为与 TFS 绑定(bind)无关。

关于c# - 使用 RollingFileAppender 时出现 Log4Net 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955588/

相关文章:

azure - 如何将完整的 TFS 2012 代码以及历史记录迁移到 Azure 中的 VSTS

c# - 如何获取 TFS 集合中所有项目的名称?

c# - 圆上的点按角度分布不均匀

c# - 如何从 PSD 文件中获取图层?

c# - 将文本作为 guid 插入二进制 (16)

c# - 将套接字从 .NET 传递到非托管 C++ 代码

.net - 如何更改 App.config 重命名的内容?

c# - ClosedXML 是否支持设置工作表的缩放级别?

c# - 在 WPF C# 中将光标焦点设置为可编辑组合框

visual-studio-2008 - 为什么要使用专用计算机使用TFS进行构建?