【问题标题】:Python syslog logger can't write more than 2048 charsPython syslog 记录器不能写入超过 2048 个字符
【发布时间】:2013-03-26 09:38:15
【问题描述】:

我正在尝试使用 Python 的 syslog 记录器将一些消息打印到 syslog。 “How to configure logging to syslog in python?”中描述的简单记录器:

import logging
import logging.handlers

my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)

handler = logging.handlers.SysLogHandler()

my_logger.addHandler(handler)

my_logger.debug('this is debug')

但是当我尝试打印像 my_logger.debug('<<4000 chars>>') 这样的很长的消息时,它只打印前 2046 个字符。 Python 中有没有这样的已知限制?

据我所知,Python 支持非常大的字符串输入,并且所有参数都作为引用传递,因此处理如此大的输入应该没有任何问题。有什么想法吗?

【问题讨论】:

  • 我相信这是系统日志限制,而不是 Python 限制。你可以编写自己的处理程序来做任何你想做的事情。
  • 是的,可能就是那个。在得出结论之前,我只是想淘汰 python。

标签: python logging limit syslog


【解决方案1】:

默认情况下,rsyslogd 限制为每条消息 2048 个字节,但您可以使用 /etc/rsyslog.conf 中的 $MaxMessageSize 参数进行设置:

$MaxMessageSize , 默认 2k - 允许指定最大值 支持的消息大小(用于发送和接收)。

参考:http://www.rsyslog.com/doc/v8-stable/configuration/global/index.html

【讨论】:

    【解决方案2】:

    你应该使用 GELF http://www.graylog2.org/about/gelf

    Graylog 扩展日志格式 (GELF) 避免了以下缺点 经典的普通系统日志:

    Limited to length of 1024 byte - Not much space for payloads like backtraces
    Unstructured. You can only build a long message string and define priority, severity etc.
    

    你可以从Does Syslog really have a 1KB message limit?阅读更多内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多