Как я могу настроить 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 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 по соображениям безопасности.
Можно ли вести протокол tcp (или udp) при использовании -network myLocalNet.
Обратите внимание, что в приведенной выше команде я попытался сопоставить порт 9999, но я не получаю логи udp (наверное, из-за --network myLocalNet).В конфигурации регистрации и конфигурации докера мне как-то нужно, чтобы IP-адрес моего компьютера был виден контейнеру докера, поскольку журналы отправляются из контейнера на мой компьютер.
ОБНОВЛЕНИЕ : после обратной связииз @LinPy я добавил флаг / udp, я также сопоставил отдельный порт tcp и обновил конфигурацию регистрации.Конфигурация работает локально для tcp и udp, но все еще не из контейнера.
Я также добавил EXPOSE 9999 / udp и EXPOSE 9995 в файл Docker