在 Django Heroku 应用程序中使用日志记录 print() 将信息记录到 Papertrail 的好处

Mic*_*ays 3 python django logging heroku papertrail-app

我有一个 Django 应用程序,我托管在 Heroku 上,并通过 Papertrail Heroku 附加组件登录到 Papertrail。我在很多地方直接将信息记录到 Papertrail,目前通过:

logger = logging.getLogger('papertrail')
logger.info('important text')
Run Code Online (Sandbox Code Playgroud)

我根据此链接设置日志记录配置:

import sys

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': 'ERROR',
        },
        'papertrail': {
            'handlers': ['console'],
            'level': 'INFO',
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

总之,这会像这样记录到 Papertrail:

Feb 07 06:10:56 app_name app/worker.1: important text
Run Code Online (Sandbox Code Playgroud)

但是,我注意到 usingprint('important text')在这里完成了同样的事情。在这种情况下继续使用loggingoverprint来记录“重要文本”有什么好处吗?我通读了这篇文章,似乎没有一条适用于此。

nic*_*ius 5

我发现自己有时会问这个问题,我通常得出的结论print是这对调试很有用,但日志记录对其他一切都更强大。

例如,日志记录具有显示严重性的日志级别。而且,日志记录允许将日志和输出、错误等写入文件。

由于这些以及更多原因,生产中的任何应用程序都应该有一个全面的日志记录系统。

通读一遍,它应该会变得更清楚:

https://docs.djangoproject.com/en/1.10/topics/logging/

如果你不相信这个答案和你引用的文章,我建议你做更多的研究。否则,继续使用print,也许你最终会说服自己。