【问题标题】:Timber.io + Django + Heroku | How to only display application logsTimber.io + Django + Heroku |如何只显示应用程序日志
【发布时间】:2020-06-04 02:27:21
【问题描述】:

我有一个在 Heroku 上运行的 Django 应用程序,其排水管将日志发送到我的 Timber.io 源。

目前,我的 Timber.io 日志显示:

  • 我写在我的应用程序中显示的日志(我想要的)
  • app日志
  • heroku日志

Here is a link to what a section of my Timber.io logs look like. 注意有app web.1heroku router 日志。

除了我在 Django 应用程序中编写的日志之外,我不想要任何其他日志。

Django 代码:

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
timber_handler = timber.TimberHandler(
    source_id=config('TIMBER_SOURCE_ID'),
    api_key=config('TIMBER_API_KEY'),
    level=logging.DEBUG
)
logger.addHandler(timber_handler)

...

logger.warning('A user has navigated to the homepage') # To reiterate, logs like this are all I want to display in my Timber.io logs.

我已向 Timber.io 的支持电子邮件发送了几封提出此问题的电子邮件。但是,一周后,我还没有收到回复。

这是我的第一个问题,如果我做错了什么,我深表歉意。提前感谢您的回复。

【问题讨论】:

    标签: django heroku logging


    【解决方案1】:

    如何定义自定义调试记录器

    my_logger.py

    import logging
    logger = logging.getLogger("my_logger")
    logger.setLevel(logging.INFO)
    timber_handler = timber.TimberHandler(
        source_id=config('TIMBER_SOURCE_ID'),
        api_key=config('TIMBER_API_KEY'),
        level=logging.DEBUG
    )
    logger.addHandler(timber_handler)
    

    Views.py:

    from my_logger import logger as debug_logger
    
    debug_logger.warning('A user has navigated to the homepage')
    

    编辑:

    查看他们的documentation,您也可以在 Timber Side 上进行过滤。

    在您的 shell 中发出以下 curl 命令:

    • 将 YOUR_API_KEY 替换为您的实际 API 密钥。
    • 将 YOUR_ORGANIZATION_ID 替换为您的 Timber 组织 ID。
    • 将 FILTER_NAME 替换为您的过滤器名称(例如:“删除健康检查日志”)
    • 将 MATCH 替换为您的日志必须包含的子字符串以限定删除。
    • 将 SOURCE_ID 替换为相关来源的 ID。随意添加。

        curl https://api.timber.io/log_filters \
        -s \
        -X POST \
        -H "Authorization: Bearer YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -d '
          {
            "organization_id": "YOUR_ORGANIZATION_ID",
            "name":"FILTER_NAME",
            "match":"MATCH",
            "source_ids": ["SOURCE_ID"]
          }
        ' \
        | jq
      

    【讨论】:

    • 为记录器使用别名似乎不是解决办法。此外,关于他们的过滤/丢弃功能,我必须为 Heroku 可能发送的每条消息添加一个协议。如果他们具有删除来自特定来源(如 appheroku 来源)的所有消息的功能,那对我来说会更有用。
    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2019-01-03
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多