.net core 使用带有.Net核心的log4net RemoteSyslogAppender
我正在尝试在带有log4net 2.0.8的.Net核心应用程序中同时使用RollingFileAppender和RemoteSyslogAppender。下面是我的log4net.config文件的外观:.net core 使用带有.Net核心的log4net RemoteSyslogAppender,.net-core,log4net,.net Core,Log4net,我正在尝试在带有log4net 2.0.8的.Net核心应用程序中同时使用RollingFileAppender和RemoteSyslogAppender。下面是我的log4net.config文件的外观: <?xml version="1.0" encoding="utf-8" ?> <log4net> <root> <priority value="Debug" /> <appender-ref ref="FileAp
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<priority value="Debug" />
<appender-ref ref="FileAppender" />
<appender-ref ref="SyslogAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\ProgressiveLogs\ProgLoggerNetCoreDemo.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="14" />
<maximumFileSize value="15000KB" />
<datePattern value="yyyyMMdd" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="SyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
<remoteAddress name="Address" value="syslogServer" />
<remotePort name="Port" value="514" />
<layout type="ProgressiveLogging.Core.ProgLayout.ProgPatternLayout, ProgressiveLogging.Core">
<conversionPattern value="%json%newline" />
</layout>
</appender>
</log4net>
)
是否有其他人能够获得类似的工作(使用带有.Net核心或.Net标准的RemoteSysLogAppender)
新增2017-09-01:我做了进一步的调查,发现这归结为.Net 4.*和.Net标准之间UDP数据包的构建和发送方式存在重大差异。NET40可以工作,它在一个数据报(数据包)中发送UDP消息,而.Net标准将消息拆分为一组数据包,这些数据包似乎由JSON消息中的逗号分隔。显然,我们的系统日志守护进程无法理解这些废话。我将进行一些直接测试,看看是否可以改变通过UDP发送到syslog的内容。经过更彻底的调查,我发现log4net RemoteSyslogAppender没有问题。我的问题是,我正在格式化最终由System.Net.Sockets.UdpClient发送的JSON消息。格式化将CRLF添加到字符串中,然后UdpClient将该消息分隔并在这些CRLF边界上分段。这对Syslog来说毫无意义。这是一个非常简单的修复-从调用NewtonSoft.Json.JsonConvert.SerializeObject中删除格式选项。我从某处复制了一个包含Json字符串格式的片段。现在工作完美了