当作为后台进程运行时,如何在mono下使用log4net FileAppender?

时间:2011-04-12 23:53:00

标签: mono log4net

我在使用单声道的log4net FileAppender时遇到问题。如果我在后台生成进程(即mono MyApp.exe &),则该进程会在一段时间后暂停。如果我在前台运行该过程,则记录器可以正常工作。

另一方面,如果我使用ConsoleAppender并重定向它(即mono MyApp.exe > debug.log &),情况就不错了。

以下是我对该应用程序的配置:

<appender name="debug-log" type="log4net.Appender.FileAppender">
  <file value="debug.log" />
  <appendToFile value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-8timestamp [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

<appender name="console" type="log4net.Appender.ConsoleAppender">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-8timestamp [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="debug-log" />
</root>

我正在使用log4net程序集的单特定版本。

修改

单声道版本:2.10.1

我刚注意到另一个有趣的行为......只要我将FileAppender重定向到任何地方,我就可以使用stdout写入调试日志。例如,如果我使用以下内容启动我的流程:

mono MyApp.exe > /dev/null &

进程正常执行,写入调试日志。在这种情况下,我只使用调试日志,而不是控制台appender。使用相同的配置,当我删除重定向后,在将少量数据写入调试日志后,该进程将暂停。

0 个答案:

没有答案