我有一个Django应用程序,我在Heroku上托管并通过Papertrail Heroku附加组件登录Papertrail。我有很多地方直接将信息记录到Papertrail,目前通过以下方式:
logger = logging.getLogger('papertrail')
logger.info('important text')
我根据this link设置了日志配置:
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',
},
},
}
一起,这样就会记录到Papertrail:
Feb 07 06:10:56 app_name app/worker.1: important text
然而,我注意到使用print('important text')
在这里完成了同样的事情。继续使用logging
而不是print
来记录重要文本"是否有任何好处?在这种情况下?我通读了this article,似乎没有一个适用于此。
答案 0 :(得分:4)
我发现自己有时会问这个问题,我通常认为print
对于调试很有用,但是日志记录对其他一切都更有用。
例如,日志记录具有显示严重性的日志级别。此外,日志记录允许将日志和输出,错误等写入文件。
由于这些原因,生产中的任何应用程序都应该有一个全面的日志记录系统。
仔细阅读本文,它应该变得更加清晰:
https://docs.djangoproject.com/en/1.10/topics/logging/
如果你不相信这个答案和你引用的文章,我建议你做更多的研究。否则,继续使用print
,也许你最终会说服自己。