繁体   English   中英

自定义 Python 日志记录方法

Custom Python logging method

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想在我的 Django 应用程序中使用python-logstash并且需要传递“额外”字段。 这是文档

extra = {"app":"app-live","source":"django_log"}

我不想经历并更改我所有的记录器调用,例如:

logger.info('Information blah.') to logger.info('Information blah.', extra=extra)

每次通话的extra都是相同的,并且是必需的。 我更愿意覆盖现有的记录器方法,这样我就可以只做一次。

有没有办法在 Django settings.py的日志处理程序中执行此操作,或者如何以及在哪里覆盖记录器方法以始终添加extra参数?

1 个回复

您应该能够使用 过滤器在全局范围内执行此操作,如日志记录手册中所述

为了稍微简化一下,Django 提供了一个CallbackFilter 您的过滤器功能如下所示:

def logstash_filter(record):
    record.app = 'app-live'
    record.source = 'django_log'
    return True

你的日志配置是这样的。

...
'filters': {
    'add_logstash_info': {
        '()': 'django.utils.log.CallbackFilter',
        'callback': logstash_filter,
    }
},
'handlers': {
    'logstash': {
        ...
        'filters': ['add_logstash_info'],
    },
...
1 Python:跨所有模块的自定义日志记录

任务 我有一组脚本,我希望它们能够生成统一的日志消息,并对记录实际消息的模块进行最少的改动。 我已经编写了一个小模块“custom_logger”,我计划从主应用程序调用一次,让它返回一个记录器,然后我会继续使用它。 我要导入应用程序的子模块应该只(或者我希望它们) 应该只“将日志记录导入 ...

2 自定义变量字段到python日志记录

我正在尝试在我的库中添加自定义格式字段。 我知道这是通过 Filter 或 LoggerAdapter 对象完成的。 但是,在我看到的示例中(例如: 如何将自定义字段添加到 Python 日志格式字符串? ),他们想要生成的自定义字段是静态的,并且在创建记录器时已知。 我需要能够将一个变量发送到我 ...

3 自定义注释作为方法日志记录的拦截器

爪哇大师, 我对annotations很annotations ,还没有搜索过很多,所以请耐心等待... 我想实现一个Custom Annotation来intercept方法调用; 从一些非常基本的东西开始,它可以只打印方法名称和参数,这样我就可以避免logger语句。 像这样的示例调用: ...

4 如何使用python日志记录模块在dictConfig文件中设置自定义日志记录处理程序

我是开发中的newbee,面临下一个问题。 我编写了一个自定义日志记录处理程序,并将其保存到单独的模块中。 我尝试将此处理程序设置为dictConfig中的处理程序类,并且可以在localhost上正常运行,但是当我在Heroku上运行它时,它会引发ValueError并显示消息“ 无法配 ...

5 自定义日志方法

我正在尝试在cakePHP中实现日志系统。 我现在遇到一个问题,就是“写入”中的方法内容被调用了两次。 这会导致出现问题,因为它在我的系统中放置了2个相同类型的日志条目。 Lib / Engine /目录中的Databaselogger.php: 在我的bootstrap.ph ...

6 python日志文件旋转的自定义方法?

我无法使日志文件轮换在Python(v2.6.6)中工作。 我需要对使用TimedRotatingFileHandler找到的日志文件扩展名进行命名的控件,以及将日志文件旋转强制达到使用RotatingFileHandler找到的大小阈值的能力。 如果建立类型为TimedRotating ...

8 python日志记录:从自定义日志级别打印准确的信息

我创建了一个自定义日志级别,如下所示: 我遇到的问题是,我的记录器格式使用%(pathname)s和%(lineno)d ,并且每当我调用logger.notice()这些值都指向logger.notice()方法定义中的行,而不是该位置。该方法是从中调用的。 如何添加notice日志 ...

10 SSIS中的自定义日志记录

我使用SSIS(通过dtexec,而不是Agent)运行一些任务。 dtexec将其日志输出到stdout中,然后>>其>>放入文件中。 这对我来说很好,但是如果需要,我当然可以使用其他方式。 我的问题是dtexec的日志太冗长。 我想选择我想要它记录的内 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM