如何从rsyslog消息

时间:2015-08-26 00:01:36

标签: python unicode syslog byte-order-mark rsyslog

在我目前的rsyslog消息中,有很多BOM显示为<feff&gt;在日志消息中。有什么办法可以在日志消息中删除这些BOM吗?我正在使用rsyslog 8.10。有什么建议?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我认为这可能实际上是由旧版Python中的错误引起的。你知道你的系统上的Python版本是否是最新的吗?如果没有,您可以尝试将其更新为您可以获得的最新Python 2.7。

相关错误报告:

如果没有更新到新的Python 2.7版本,那么解决这个问题的唯一方法是使用旧的Python 2.7安装将以下补丁应用于系统上的/usr/lib/python2.7/logging/handlers.py文件。

@@ -797,9 +797,10 @@
                                             self.mapPriority(record.levelname))
         # Message is a string. Convert to bytes as required by RFC 5424
         if type(msg) is unicode:
            msg = msg.encode('utf-8')
- if codecs:
- msg = codecs.BOM_UTF8 + msg
+ #if codecs:
+ # msg = codecs.BOM_UTF8 + msg
         msg = prio + msg
         try:
             if self.unixsocket:

对于Python 2.6系统,我认为您可能需要对系统上的/usr/lib/python2.6/logging/handlers.py文件进行以下修补。

@@ -821,8 +821,6 @@ class SysLogHandler(logging.Handler):
         # Message is a string. Convert to bytes as required by RFC 5424
         if type(msg) is unicode:
             msg = msg.encode('utf-8')
-            if codecs:
-                msg = codecs.BOM_UTF8 + msg
         msg = prio + msg
         try:
             if self.unixsocket: