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

jhe*_*ngs 7 mono log4net

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

另一方面,如果我使用a 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>
Run Code Online (Sandbox Code Playgroud)

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

编辑

单声道版本:2.10.1

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

mono MyApp.exe > /dev/null &
Run Code Online (Sandbox Code Playgroud)

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