【问题标题】:Why log4net log message have some unknown character?为什么 log4net 日志消息有一些未知字符?
【发布时间】:2017-12-03 22:02:04
【问题描述】:

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

    <logger name="LogTracking">
      <level value="INFO" />
      <appender-ref ref="LogTrackingAppender" />
    </logger>
    <appender name="LogTrackingAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logging\urltracking\" />
      <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>

【问题讨论】:

    标签: log4net


    【解决方案1】:

    那些字符byte order mark (BOM)

    BOM 的 UTF-8 表示是(十六进制)字节序列 0xEF,0xBB,0xBF。文本编辑器或网络浏览器误解了文本 因为 ISO-8859-1 或 CP1252 将为此显示字符 。

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

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

    System.Text.UTF8Encoding

    【讨论】:

    • 这意味着我必须用&lt;encoding type="System.Text.UTF8Encoding"/&gt;替换&lt;encoding value="utf-8" /&gt;
    • @SonNguyen ukm 只需将type 属性添加到encoding 标签。
    • @SonNguyen 如果它有助于解决您的问题,您应该接受答案,这对后来的用户非常有用。 :) 请参考:Accepting Answers: How does it work?
    • 这帮助我在使用&lt;encoding value="UTF-8"&gt;时摆脱了记录中文(?)字符和NULL字符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多