【问题标题】:Django logging format for LogstashLogstash 的 Django 日志记录格式
【发布时间】: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 上有很多。

标签: python django logstash


【解决方案1】:

您应该能够使用以下内容捕获 Django 日志:

模式:

DJANGO_LOGLEVEL (DEBUG|INFO|ERROR|WARNING|CRITICAL)
DJANGO_LOG %{DJANGO_LOGLEVEL:log_level}\s+%{TIMESTAMP_ISO8601:log_timestamp}\s+%{TZ:log_tz}\s+%{NOTSPACE:logger}\s+%{WORD:module}\s+%{POSINT:proc_id}\s+%{GREEDYDATA:content}

过滤器:

filter {
     if [type] == "django" {
        grok {
             match => ["message", "%{DJANGO_LOG}" ]
        }

        date {
            match => [ "timestamp", "ISO8601", "YYYY-MM-dd HH:mm:ss,SSS"]
            target => "@timestamp"
        }
     }
}

【讨论】:

    【解决方案2】:

    这个 [1] 包提供了一个解决方案,但它不是用格式化程序写入文件,而是直接提供一个处理程序来写入 logstash。

    希望这会有所帮助。

    [1]https://github.com/vklochan/python-logstash

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      相关资源
      最近更新 更多