Django 日誌模組 logging 的配置
阿新 • • 發佈:2019-01-23
本文將通過一個實際的例子來說明如何配置 logging 模組。更多資訊可以參考 Django 的官網文件。
配置資訊需要在 setting.py 檔案中進行新增。
setting.py DEBUG = True # 通過這種方式可以開啟 DEBUG 模式 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, # 針對 DEBUG = True 的情況 }, 'formatters': { 'standard': { 'format': '%(levelname)s %(asctime)s %(pathname)s %(filename)s %(module)s %(funcName)s %(lineno)d: %(message)s' }, # 對日誌資訊進行格式化,每個欄位對應了日誌格式中的一個欄位,更多欄位參考官網文件,我認為這些欄位比較合適,輸出類似於下面的內容 # INFO 2016-09-03 16:25:20,067 /home/ubuntu/mysite/views.py views.py views get 29: some info... }, 'handlers': { 'mail_admins': { 'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler', 'formatter':'standard' }, 'file_handler': { 'level': 'DEBUG', 'class': 'logging.handlers.TimedRotatingFileHandler', 'filename': '/tmp/byod/byodadmin/byod.admin.log', 'formatter':'standard' }, # 用於檔案輸出 'console':{ 'level': 'INFO', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'standard' }, }, 'loggers': { 'django': { 'handlers' :['file_handler', 'console'], 'level':'DEBUG', 'propagate': True # 是否繼承父類的log資訊 }, # handlers 來自於上面的 handlers 定義的內容 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': False, }, } }
配置好之後,在程式碼中可按照如下方法使用
import logging
logger = logging.getLogger("django") # 為loggers中定義的名稱
logger.info("some info...")
可用的函式主要有五種:
logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()
注:如果 level 設定為 DEBUG,列印的資訊非常多。資料庫的查詢語句也會打印出來。
DEBUG 2016-09-03 16:24:46,543 /usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py utils.py utils execute 89: (0.000) SET SQL_AUTO_IS_NULL = 0; args=None