Ric*_*kyA 5 python django logging fluentd
我正在尝试使用代码中的记录器从 Django 项目设置 Fluentd 日志处理程序:
def get_fluentd_logger(name):
import logging
from fluent import handler
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(name)
logger.addHandler(handler.FluentHandler(name, host='localhost', port=24224))
return logger
Run Code Online (Sandbox Code Playgroud)
handler.FluentHandler来自包fluent-logger,我在本地运行fluent。
流利的.conf:
<source>
type forward
port 24224
</source>
<match **>
type copy
<store>
type stdout
</store>
<store>
type forward
send_timeout 60s
recover_wait 10s
heartbeat_interval 1s
phi_threshold 8
hard_timeout 60s
<server>
name monitoring
host 1.2.3.4
port 24224
weight 100
</server>
</store>
</match>
Run Code Online (Sandbox Code Playgroud)
当我从非 django python 项目运行它时,它工作正常,但是当从 django 调用时,它不执行任何操作。
问题是:有没有办法查看当前安装的记录器及其处理程序,以便我可以调试这种情况?
[编辑]
当从 django 设置完成时,如下所示:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '%(levelname)s: %(message)s'
},
},
'handlers': {
'fluentdebug':{
'level':'DEBUG',
'class':'fluent.handler.FluentHandler',
'formatter': 'simple',
'tag':'foo.bar.baz',
'host':'localhost',
'port':24224,
},
},
'loggers': {
'foo.bar.baz': {
'handlers': ['fluentdebug'],
'level': 'DEBUG',
'propagate': True,
},
}
}
Run Code Online (Sandbox Code Playgroud)
它确实有效。然而,我希望能够通过代码执行此操作,因为foo.bar.baz可以采用许多值,并且我不想用 20 个执行完全相同操作的记录器和处理程序来污染此文件。
也许真正的问题是:为什么我不能logging在 Django 执行设置后从代码添加记录器?
我要回答自己,因为如果有人遇到同样的问题,就更容易找到。问题似乎出在FluentHandler. 使用 @Thomas 提到的 Brandon 的日志树,我们可以看到记录器已正确添加。
然而,进一步的调试表明,如果您没有显式设置日志级别,它将设置为NotSet. 不知何故,在“普通”Python 中这是可以的并且记录被发出。然而在 Django 中,NotSet级别日志被丢弃。我不知道这是否是标准的 Django 行为,但这引起了很多麻烦。下面是有效的代码:
def get_fluentd_logger(name):
import logging
from fluent import handler
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(name)
logger.level = logging.INFO
handler = handler.FluentHandler(name, host='localhost', port=24224)
handler.level = logging.INFO
logger.addHandler(handler)
return logger
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3756 次 |
| 最近记录: |