【发布时间】:2015-05-23 02:24:19
【问题描述】:
我正在尝试将我的 django 应用程序配置为以 Logstash 易于使用的格式写入日志。 (灵感来自 Node 的 Winston 日志记录包)
Logstash 需要一个 JSON 对象,其中日志消息位于键“@message”和时间戳“@timestamp”中。有谁知道如何像这样格式化 Django 日志?
到目前为止,我有一些类似于 django 文档中的内容。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
}
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': './logs/app.log',
},
},
'loggers': {
'django.request': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
这使得日志是这样的:
WARNING 2015-05-22 21:20:19,082 base 3360 4588670976 Not Found: /register/fwq
有人对如何以 Logstash 格式对消息进行 JSON 编码有建议吗?
使用 Python 2.7.9、Django 1.8 和 Logstash 1.5
【问题讨论】:
-
我猜你可能会通过在 logstash 代理中使用 grok 过滤器获得更好的体验
-
我知道我可以那样做。但我正在尝试制作一个任何人都可以用于 Django 的通用包,例如 npmjs.com/package/winston-logstash-file 用于节点。
-
只有古代版本的 Logstash 使用
@message。现在它很简单message。现有的 Python 格式化程序都不会生成 JSON 日志,但 GitHub 上有很多。