python - 如何配置 rsyslog 以使用 Python 的集中日志

标签 python logging rsyslog

elk 的 rsyslog 在 localhost 的 docker 中运行良好。

我可以使用以下命令在 Kibana 中查看日志:

logger -n localhost 'log message from test99'
logger -n localhost 'log message from test99'
logger -n 10.211.55.12 'log message from test99'
logger -n 10.211.55.12 'log message from test99234234'

这里的问题是,我想在我的 Python 应用程序中使用 rsyslog。示例代码如下所示,具有相同的 rsyslog 配置。

但我无法从 Python 应用程序中获得任何信息。那么我的配置或代码有什么问题吗?

10.211.55.12 是我本地主机的 IP 地址

日志测试.py

import logging
import logging.handlers

logger = logging.getLogger('myLogger')
logger.setLevel(logging.INFO)

# Add handler to the logger
handler = logging.handlers.SysLogHandler('/dev/log')

# Add formatter to the handler
formatter = logging.Formatter('Python: { "loggerName":"%(name)s", "asciTime":"%(asctime)s", "pathName":"%(pathname)s", "logRecordCreationTime":"%(created)f", "functionName":"%(funcName)s", "levelNo":"%(levelno)s", "lineNo":"%(lineno)d", "time":"%(msecs)d", "levelName":"%(levelname)s", "message":"%(message)s"}')

handler.formatter = formatter
logger.addHandler(handler)
for _ in range(100):
    logger.info("Test Message")

rsyslog.conf

 47 $DirCreateMode 0755
 48 $Umask 0022
 49 $PrivDropToUser syslog
 50 $PrivDropToGroup syslog
 51
 52 #
 53 # Where to place spool and state files
 54 #
 55 $WorkDirectory /var/spool/rsyslog
 56
 57 #
 58 # Include all configuration files in /etc/rsyslog.d/
 59 #
 60 $IncludeConfig /etc/rsyslog.d/*.conf
 61 *.* 10.211.55.12:514
 62
 63
 64 # Log anything (except mail) of level info or higher.
 65
 66 # Don't log private authentication messages!
 67
 68 *.info;mail.none;authpriv.none;cron.none      /var/log/messages
 69
 70 # The authpriv file has restricted access.
 71
 72 authpriv.*                                    /var/log/secure
 73
 74 # Log all the mail messages in one place.
 75
 76 mail.*                                        /var/log/maillog
 77
 78 # Log cron stuff
 79
 80 cron.*                                        /var/log/cron
 81
 82 # Everybody gets emergency messages
 83
 84 *.emerg                                       *
 85
 86 # Save news errors of level crit and higher in a special file.
 87
 88 uucp,news.crit                                /var/log/spooler
 89
 90 # Save boot messages also to boot.log
 91
 92 local7.*                                      /var/log/boot.log

最佳答案

@VPfB的评论是对的。将 logging.handlers.SysLogHandler('/dev/log') 更改为 logging.handlers.SysLogHandler() 将适用于我的情况。谢谢@VPfB!

关于python - 如何配置 rsyslog 以使用 Python 的集中日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43817152/

相关文章:

python - Trello API ~ 只是获取列表的内容?

python - django 部署到 Heroku : Server Error(500)

python - 从一个程序运行多个程序

python - MD5 加密问题

rsyslog过滤和转发

linux - 如何使用 rsyslog 仅发送特定文件到远程服务器

python - 为什么 python 不将异常记录到 syslog(但它确实记录了?)

c# - 记录服务 SOAP 请求和响应

java - Java API 设计中的面向对象事件日志记录

python - 为什么禁止覆盖日志记录属性?