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

发布于 2024-11-01 05:57:39 字数 1339 浏览 1 评论 0原文

我在使用带有单声道的 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 程序集的单一特定版本。

编辑

Mono版本:2.10.1

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

mono MyApp.exe > /dev/null &

进程正常执行,写入调试日志。在本例中,我仅使用调试日志,而不使用控制台附加程序。使用相同的配置,当我删除重定向时,在将少量数据写入调试日志后,该进程将挂起。

I'm having trouble using a log4net FileAppender with mono. If I spawn the processess in the background (i.e. mono MyApp.exe &), the process suspends after a short period of time. If I run the process in the foreground, the logger works correctly.

On the other hand, if I use a ConsoleAppender and redirect it (i.e. mono MyApp.exe > debug.log &), things are fine.

Here is my configuration for the application:

<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>

I am using the mono-specific version of the log4net assembly.

EDIT

Mono version: 2.10.1

I just noticed another interesting behavior... I am able to use the FileAppender to write to the debug-log as long as I redirect stdout anywhere. For example, if I start my process using the following:

mono MyApp.exe > /dev/null &

The process executes normally, writing to the debug-log. In this case, I am only using the debug-log, not the console appender. Using the same configuration, the process will suspend after writing a small amount of data to debug-log when I remove the redirect.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文