为什么log4net日志消息具有一些未知字符



我使用log4net来记录日志。并在此处使用配置(仅记录消息(:

    <logger name="LogTracking">
      <level value="INFO" />
      <appender-ref ref="LogTrackingAppender" />
    </logger>
    <appender name="LogTrackingAppender" type="log4net.Appender.RollingFileAppender">
      <file value="loggingurltracking" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <maxSizeRollBackups value="-1" />
      <maximumFileSize value="20MB" />
      <encoding value="utf-8" />
      <datePattern value="yyyy'\'MM'\'dd'\'yyyyMMddHH'.log'" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message%newline" />
      </layout>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    </appender>

但是,当我打开日志文件时,如果在UTF-8中编码行消息似乎正常。如果在ANSI编码中,这些行消息在线的开头中具有未知字符。请参阅此处:

<?xml version="1.0" encoding="utf-8"?><UrlTrackingObj><Url>mysite</Url><Action>view</Action><Ip>::1</Ip><Os>Windows 8.1</Os><Browser>Chrome 59.0</Browser></UrlTrackingObj>

然后,当我的应用程序读取日志线时,它可以读取和处理此字符。我的配置是什么错?还是该解决方案解决了这个问题?我只想要我的日志行:

<?xml version="1.0" encoding="utf-8"?><UrlTrackingObj><Url>mysite</Url><Action>view</Action><Ip>::1</Ip><Os>Windows 8.1</Os><Browser>Chrome 59.0</Browser></UrlTrackingObj>

那些字符 是字节订单标记(bom(:

BOM的UTF-8表示是(十六进制(字节序列 0xef,0xbb,0xbf。文本编辑器或Web浏览器误解了文本 因为ISO-8859-1或CP1252将显示字符â»。

您可以使用其他编码类,而不是默认类来抑制BOM,例如:

<encoding type="System.Text.UTF8Encoding"/>

system.text.utf8encoding

最新更新