gpt4 book ai didi

docker - 如何使用NLog从Docker容器获取UDP或TCP日志

转载 作者:行者123 更新时间:2023-12-02 19:23:36 25 4
gpt4 key购买 nike

如何配置docker和Nlog具有tcp日志记录?我使用log4view,并且使用以下配置在我的机器上顺利进行udp日志记录:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Debug"
internalLogFile="c:\Temp\internal-nlog.txt">


<targets>
<target xsi:type="File" name="file" fileName="c:\Temp\xRayServices-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

<target name="udp" xsi:type="Network" address="udp4://localhost:9999"
layout="${log4jxmlevent}" newline="True" />
</targets>
<target name="tcp" xsi:type="Network" address="tcp4://localhost:9995"
layout="${log4jxmlevent}" newline="True" />
</targets>

<rules>
<logger name="*" minlevel="Trace" writeTo="file,udp,tcp" />
</rules>
</nlog>

我还使用上述配置中的文件目标将docker容器中的日志写入文件,然后在启动docker镜像时按如下方式将docker目录映射到我的系统目录(简化为仅保留基本内容):
docker run --rm --name myName  -p 9995:9995 -p 9999:9999/udp --network myLocalNet --mount "type=bind,source=C:\Temp,destination=C:\Temp" myImage 

这有效,我得到了可用的txt文件日志。我真的很想使用Log4view。

就我而言,出于安全原因,我需要使用--network myLocalNet。

使用--network myLocalNet时是否可以进行tcp(或udp)日志记录。

请注意,在上面的命令中,我尝试映射端口9999,但没有收到udp日志(由于--network myLocalNet,我猜是这样)。在日志记录配置和docker配置中,由于日志是从容器发送到我的计算机,因此我需要以某种方式使我的计算机IP地址对docker容器可见。

更新:在@LinPy反馈之后,我添加了/ udp标志,我还映射了seaparate tcp端口并更新了日志记录配置。该配置在本地可用于tcp和udp,但仍不能从容器中使用。

我还向docker文件添加了EXPOSE 9999 / udp和EXPOSE 9995

最佳答案

尝试同时发布TCPUDP:

docker run --rm --name myName -p 9999:9999/udp -p 9999:9999 --network myLocalNet --mount "type=bind,source=C:\Temp,destination=C:\Temp" myImage

关于docker - 如何使用NLog从Docker容器获取UDP或TCP日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58092984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com