log4net仅在Visual Studio调试器中运行时记录

时间:2009-04-06 15:39:13

标签: visual-studio log4net

我正在运行Visual Studio 2008 - 并且遇到log4net日志记录问题(v1.2.10)。 我有一个小的控制台测试程序,只有一个日志语句。 我为RollingLogFileAppender和ConsoleAppender配置了log4net。

当我从命令行运行编译的exe时,我看到在运行时目录中正确创建了日志文件。创建日志文件(或附加到日志文件时,如果存在),但唯一的输出是配置的[标题]和[页脚]。控制台没有输出。

但是,当我在调试器下运行时,日志消息会出现在日志文件和控制台上。以下是我的log4net配置:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
  </appender>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="quicktest-log-" />
    <appendToFile value="true" />
    <immediateFlush value="true" />
    <datepattern value="yyyy-MM-dd" />
    <maxSizeRollBackups value="100" />
    <maximumFileSize value="1048576" />
    <rollingStyle value="Composite" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <header value="[Begin Quicktest program log]&#13;&#10;" />
      <footer value="[End Quicktest program log]&#13;&#10;" />
      <conversionPattern value="%date{HH:mm:ss} [%thread] %-5level %logger: %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="ConsoleAppender" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

3 个答案:

答案 0 :(得分:2)

这个理论可能是一个延伸,但你确保app.config已被复制到你的可执行文件所在的文件夹中吗?必须将App.config复制到输出可执行文件所在的位置,并且还必须将其重命名为&lt; executablename&gt; .config,因此如果您的可执行文件是MyProgram.exe,则config必须位于MyProgram.exe.config中。

答案 1 :(得分:1)

它现在正在运作,但神秘感仍然存在。显然,大量的中式自助餐是解决这类问题的唯一方法,因为一旦我有了这个问题,问题就会消失。

我的测试程序是带

的单个文件
class Test 
{
    static void Main (string[] args)
    {
       .
       . // some logging attempted here.
       .
    }
}

当我最初遇到问题时,我正在Main()内进行记录。之后,我在类Test上创建了一个方法,在Main中实例化了类Test,并将日志记录移动到了方法中。这解决了这个问题:

class Test
{
    static void Main (string[] args)
    {
      var p = new Test();
      p.Go ();
    }
    public void Go ()
    {
       . // some logging here.
    }
}

这仍然没有定论。我把它原来的方式移回去了,它开始工作了。所以,我必须得出结论,这个难题的答案是:不要尝试没有中国食物的第一次log4net测试程序。

答案 2 :(得分:1)

我遇到了同样的问题,我正在进行clickonce部署。

我发现我需要在Project属性中添加log4net.xml&gt;发布&gt; ApplicationFiles并将此log4net.xml作为数据文件。