首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中配置日志记录到syslog?

如何在Python中配置日志记录到syslog?
EN

Stack Overflow用户
提问于 2010-10-19 21:11:39
回答 10查看 163.3K关注 0票数 133

我搞不懂Python的logging模块。我的需求非常简单:我只想将所有内容都记录到syslog中。在阅读文档之后,我想出了这个简单的测试脚本:

代码语言:javascript
复制
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.critical('this is critical')

但此脚本不会在syslog中生成任何日志记录。怎么了?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-10-19 23:03:39

将该行更改为:

代码语言:javascript
复制
handler = SysLogHandler(address='/dev/log')

这对我很管用

代码语言:javascript
复制
import logging
import logging.handlers

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

handler = logging.handlers.SysLogHandler(address = '/dev/log')

my_logger.addHandler(handler)

my_logger.debug('this is debug')
my_logger.critical('this is critical')
票数 152
EN

Stack Overflow用户

发布于 2014-07-16 05:16:01

我发现the syslog module使得获取您所描述的基本日志记录行为变得非常容易:

代码语言:javascript
复制
import syslog
syslog.syslog("This is a test message")
syslog.syslog(syslog.LOG_INFO, "Test message at INFO priority")

你也可以做其他的事情,但据我所知,即使是前两行也能得到你想要的东西。

票数 26
EN

Stack Overflow用户

发布于 2013-10-15 02:56:12

将这里和其他地方的东西拼凑在一起,这就是我想出的在unbuntu12.04和centOS6上工作的方法

/etc/rsyslog.d/中创建一个以.conf结尾的文件,并添加以下文本

代码语言:javascript
复制
local6.*        /var/log/my-logfile

重新启动rsyslog,重新加载似乎不适用于新的日志文件。也许它只重新加载现有的conf文件?

代码语言:javascript
复制
sudo restart rsyslog

然后,您可以使用此测试程序来确保它确实有效。

代码语言:javascript
复制
import logging, sys
from logging import config

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(module)s P%(process)d T%(thread)d %(message)s'
            },
        },
    'handlers': {
        'stdout': {
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
            'formatter': 'verbose',
            },
        'sys-logger6': {
            'class': 'logging.handlers.SysLogHandler',
            'address': '/dev/log',
            'facility': "local6",
            'formatter': 'verbose',
            },
        },
    'loggers': {
        'my-logger': {
            'handlers': ['sys-logger6','stdout'],
            'level': logging.DEBUG,
            'propagate': True,
            },
        }
    }

config.dictConfig(LOGGING)


logger = logging.getLogger("my-logger")

logger.debug("Debug")
logger.info("Info")
logger.warn("Warn")
logger.error("Error")
logger.critical("Critical")
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3968669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档