首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头缺少log4net ConsoleAppender日志

码头缺少log4net ConsoleAppender日志
EN

Stack Overflow用户
提问于 2017-06-06 12:02:38
回答 1查看 2.9K关注 0票数 2

我有一个简单的C#程序,其log4net配置如下:

代码语言:javascript
复制
<log4net>
    <appender name="stdout" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%%-5level - %message%newline" />
    </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="stdout" />
    </root>
</log4net>

以及以下代码(简写为清晰度):

代码语言:javascript
复制
public static void Main(String[] args)
{
    var log = LogManager.GetLogger("Logger");
    log.Info("Hello From Logger");
    Console.WriteLine("Hello From Console");
}

我正在Ubuntu16.04系统上使用.NET 4.5Mono编译和运行这个程序。当我使用控制台运行程序时,输出如预期的那样:

代码语言:javascript
复制
$ mono Program.exe
INFO - Hello From Logger
Hello From Console

但是,当我在分离模式的Docker容器中运行相同的程序(即"docker运行-d")并检查日志时,我只从Console.WriteLine获得日志:

代码语言:javascript
复制
$ docker logs <container_id>
Hello From Console

在试图跟踪这个问题时,我尝试使用守护进程工具(这里有更多的信息)运行这个程序,它展示了相同的行为,使我相信这是log4net而不是docker的问题。我还为log4net编写了一个只执行Console.Write的自定义附录(我相信这与ConsoleAppender的功能相同,但我希望消除任何其他可能的变量):

代码语言:javascript
复制
public class CustomAppender: AppenderSkeleton
{
    protected override void Append(LoggingEvent loggingEvent)
    {
        Console.Write(RenderLoggingEvent(loggingEvent));
    }
} 

但没有运气。任何对log4net有深入了解的人能告诉我我在哪里做错了什么吗?或者解释一下log4net可以做些什么来进行规范,这样其他应该捕获该流的程序就不会了吗?

更新:情节变复杂了!我编写了一个快速而肮脏的可执行文件,它使用Process类来执行我的示例程序。然后从示例程序中获取stdout并使用Console.WriteLine编写它,如下所示:

代码语言:javascript
复制
Process proc = new Process();
proc.StartInfo.FileName = "/path/to/example.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInto.RedirectStandardOutput = true;
proc.Start();
Thread.Sleep(1000);
Console.WriteLine(proc.StandardOutput.ReadToEnd());

当我直接从控制台运行它时,它工作得很好,但是当我从docker / daemonize运行它时,也会遇到同样的问题。所以现在我真的很困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-08 00:37:58

这不是一个很好的答案,但是如果其他人遇到了这个问题,我可以使用NLog库这里进行日志记录。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44389517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档