我正在使用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>
有人可以帮忙解决这个问题吗?
答案 0 :(得分:2)
一些问题排查提示:
在配置文件中定义日志文件的绝对路径。
检查代码中的当前工作目录(Environment.CurrentDirectory)。如果您在VS调试器下运行,并且尚未在项目属性的“调试”选项卡中指定工作目录,则可能默认为当前的Visual Studio工作目录。
我不认为与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。