2011-02-10 82 views
2

我正在使用log4net在我的应用程序中执行日志记录。我已将我的项目绑定到TFS。我已经创建了周围的log4net包装如下:使用RollingFileAppender时出现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> 

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

回答

2

一些故障排除提示:

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

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

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

+0

是的,我检查了这条道路。它指向默认的bin \ debug目录。但问题仍然存在。我试图指定绝对路径,但文件不是在该位置创建的。 – Omkar 2011-02-10 10:26:26

0

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

否则试图让log4net的资源库保持与 log4net.LogManager.GetRepository()。它返回一个ILoggerRepository类型的对象。您可以尝试使用此对象将有关当前log4net配置的一些信息写入控制台或其他位置。

0

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

1

只要改变这部分

<appendToFile value="true" />