c# Log4Net 未在 docker 中写入文件/控制台

问题描述 投票:0回答:1

我编写了一个 C# (.NET 6.0) 控制台应用程序,它是一个队列使用者,并将出列的消息写入日志文件。本地一切都很好,但当我对应用程序进行 dockerize 时,即使消息从队列中正确确认,我也看不到日志文件或控制台消息。

这是带有 2 个附加程序的 log4net.config 文件

<log4net>
    <root>
        <level value="ALL" />
        <appender-ref ref="FileAppender" />
        <appender-ref ref="console" />
    </root>
    <appender name="console" type="log4net.Appender.ConsoleAppender">
        <layout type="Elastic.CommonSchema.Log4net.EcsLayout, Elastic.CommonSchema.Log4net">
            
        </layout>
    </appender>
    
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="C:\Users\t.domenici\source\repos\RabbitMqDemo\LogHandler\bin\Release\net6.0\Log\Log_" />
        <lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
        <datePattern value="dd_MM_yyyy'.log'"/>
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <staticLogFileName value="false"/>
        <layout type="Elastic.CommonSchema.Log4net.EcsLayout, Elastic.CommonSchema.Log4net" />
    </appender>

</log4net>

这里是创建绑定挂载的docker命令,已正确创建

docker run -v C:/Users/********/source/repos/RabbitMqDemo/LogHandler/bin/Release/net6.0/Log:/app/LogHandler/Log -it --name LogHandler log-handler-image:1.0.0

提前致谢!

docker log4net
1个回答
0
投票

我通过添加 WORKDIR /app/LogHandler 命令成功使用 log4net sdk 写入日志并打印消息。现在,一旦容器启动,该文件就会出现,并且它会在每条出列的消息上正确更新。甚至控制台也在工作。现在是时候创建一个卷,以使文件在容器关闭后仍然保留。 这是 Dockerfile [![在此处输入图像描述][1]][1] 和一些结果:

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.