- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我试图理解为什么 Python 的日志记录框架 (logging.handlers) 中的 SyslogHandler 类没有实现 RFC 6587 描述的任何框架机制:
八位字节计数:它将消息长度“添加”到系统日志帧:
Non-Transparent-Framing:分隔消息的尾符。这是大多数服务器理解的内容。
这个“问题”可以通过在消息末尾添加一个 LF 字符轻松解决,但是我希望 SyslogHandler 默认会处理这个问题:
sHandler = logging.handlers.SysLogHandler(address=(address[0], address[1]), socktype = socket.SOCK_STREAM)
sHandler.setFormatter(logging.Formatter(fmt=MSG_SYSLOG_FORMAT, datefmt=DATE_FMT))
self.addHandler(sHandler)
这对 Fluentd 和 rsyslog 都不起作用。正如我所说,我暂时将其添加到 handlers.py 的第 855 行(只是为了测试):
msg = prio + msg + '\n'
现在正在工作。
现在,我正在做的是覆盖 emit() 方法,子类化 SyslogHandler。
最佳答案
logging
中的 Syslog 支持早于 RFC,在该 RFC 之前,几乎没有标准。
准确地说:SysLogHandler
处理程序是 logging
的一部分 first added to the Python standard library in 2002自那以后基本保持不变(TCP 支持为 added in 2009,RFC5424 支持在 2011 年得到改进);原始代码基于 this syslog
module from 1997 .
来自 other bug reports很明显,维护者希望在此处的代码中保持最广泛的向后兼容性,因此如果您需要更新的 RFC 中的特定功能,您有两个选择:
logging
模块中的功能;考虑向后兼容性要求。关于Python 的 SyslogHandler 和 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041697/
我正在尝试使用 python 日志记录模块将消息记录到远程 rsyslog 服务器。消息已收到,但它会将每条消息的消息连接在一行中。这是我的代码示例: to_syslog_priority: dict
已关注 advice ,我计划将多个时间关键的 python 进程(客户端)的错误记录到单个日志记录进程(服务器)。 SysLogHandler似乎是正确的选择,因为它使用 UDP(我宁愿与系统无关)
我尝试使用 logging.handlers.SysLogHandler 进行日志记录并将其发送到 logstash。 Python代码: import logging from logging im
我试图理解为什么 Python 的日志记录框架 (logging.handlers) 中的 SyslogHandler 类没有实现 RFC 6587 描述的任何框架机制: 八位字节计数:它将消息长度“
我正在编写一个应用程序,它使用 logging 模块和 logging.StreamHandler( ) 和 logging.handlers.SysLogHandler(address='/dev/
我正在研究如何从我的 Python 应用程序中登录到 syslog,我发现有两种方法: 使用 syslog.syslog()例行公事 使用记录器模块SysLogHandler 哪个是最好的选择,每个的
我正在使用 python sysloghander 将日志发送到集中式系统日志服务器。该代码正在运行,但我在自定义格式时遇到了一些问题。下面是我写的代码。 #!/usr/bin/python impo
此代码使用 syslog 模块记录到 syslog: import syslog syslog.syslog(syslog.LOG_ERR, 'a') 下面是使用 logging 模块的等效代码: i
我无法让 SysLogHandler 工作,这让我抓狂。 这是我的代码: import logging import logging.handlers logger = loggin
为了将“myapp”的日志消息写入/var/log/local5.log,我使用SysLogHandler . 问题 “myapp”运行良好,没有错误,但没有记录任何内容,/var/log/local
我正在尝试配置 Python 应用程序以使用标准 Linux 系统日志记录到/var/log/messages。但是,当我尝试创建系统日志处理程序时,出现错误 socket.error: [Errno
我有一个进程使用 logging.SyslogHandler 通过 TCP 将日志发送到系统日志服务器。不幸的是,如果系统日志服务器由于某种原因重新启动,进程将停止发送日志并且无法重新建立连接。 我想
我使用 logging.fileConfig() 配置了日志记录。我有一个根记录器转到使用 SysLogHandler('/dev/log', handlers.SysLogHandler.LOG_U
当我在我的 mac 上运行它时: import logging.handlers logger = logging.getLogger(__name__) logger.setLevel(loggin
我使用 SysLogHandler 配置了一个 Python 记录器,并作为测试使用所有级别记录了一些消息:调试、信息、警告、错误、严重。如果我运行“syslog”或查看 Console.app 显示
在 OS X 10.10.4 上使用 Python 3.5,我在输出系统日志消息中得到虚假的 ] 字符。这可以通过以下示例程序看到: #!/usr/bin/env python3 import log
我在 SO 上遵循了几个答案,但无济于事。 我正在 Macbook (Yosemite) 上开发,但我们的测试/生产机器是 Debian 7(使用 rsyslog)。我正在尝试以一种既可以在本地工作又
我是一名优秀的程序员,十分优秀!