作为后台进程运行时,如何在 mono 下使用 log4net FileAppender?
我在使用带有单声道的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论