Django開發--日誌處理2.0
阿新 • • 發佈:2018-12-21
日誌:
使用舉例:
在要用log的view.py裡面,如果想用django這個日誌,則
log=logging.getLogger('django')
log.error(“日誌內容”)
如果,想要在日誌內容裡面傳遞變數,怎麼辦?
log.error(" %s : execute %s failed",變數1,變數2),比較像c的printf,還是很方便的。
settings.py內配置資訊:
# log settings # 日誌的文字日誌級別,由低到高分別為:DEBUG -> INFO -> WARNING -> ERROR -> CRITICAL # 日誌的數字日誌級別,由低到高分別為: 10 -> 20 -> 30 -> 40 -> 50 # formatters: 指定輸出的格式,被handler使用 # handlers:實際上來處理日誌記錄的地方。指定輸出到控制檯還是檔案中還是其他..,以及輸出的方式。被logger引用 # loggers: 指定django中的每個模組使用哪個handlers。以及日誌輸出的級別 # filters: 是在資訊從logger傳遞到handler的過程中實施一些過濾行為,沒有預設情況: 任何達到log level的日誌資訊都會被處理 # 注意:日誌的輸出級別是由loggers中的每個模組中level選項定義。如果沒有配置,那麼預設為warning級別 LOGGING = { 'version': 1, 'disable_existing_loggers': True, # 預設True,預設的配置就會被禁用.但官方說這樣可能有意外結果 'formatters': { 'standard': { # asctime: 時間(年月日時分秒毫秒) # threadName: 執行緒名, thread: 執行緒ID # processName: 程序名稱, process: 程序ID # name: 日誌器名稱(用loggers的哪個) # lineno: 數字日誌級別, levelname: 文字日誌級別 # message: 日誌文字內容 'format': '%(asctime)s [%(processName)s:%(process)d] [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s' }, }, 'filters': { # 'require_debug_true': { # '()': 'django.utils.log.RequireDebugTrue', # }, }, 'handlers': { # 'mail_admins': { # 'level': 'ERROR', # 'class': 'django.utils.log.AdminEmailHandler', # 'include_html': True, # }, 'file': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(BASE_DIR + '/logs/', 'all.log'), # 或者直接寫路徑:'c:\logs\all.log', 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter': 'standard', }, 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'standard' }, 'request_handler': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(BASE_DIR + '/logs/', 'request.log'), # 或者直接寫路徑:'filename':'c:\logs\request.log'' 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter': 'standard', }, # 'scprits_handler': { # 'level': 'DEBUG', # 'class': 'logging.handlers.RotatingFileHandler', # 'filename': os.path.join(BASE_DIR + '/logs/', 'script.log'), # 或者直接寫路徑:'filename':'c:\logs\script.log' # 'maxBytes': 1024 * 1024 * 5, # 5 MB # 'backupCount': 5, # 'formatter': 'standard', # }, }, 'loggers': { # loggers,日誌器,是有層級關係的 # propagate屬性值為1或True,則表示日誌訊息將會被輸出到處理器指定的位置, # 同時還會被傳遞給parent日誌器的handlers進行處理直到當前日誌器的propagate屬性為0停止, # 如果propagate值為0或False,則表示不向parent日誌器的handlers傳遞該訊息,到此結束。 'django': { # 檔案形式, 控制檯形式 'handlers': ['file', 'console'], 'level': 'INFO', 'propagate': False }, 'django.request': { 'handlers': ['request_handler'], 'level': 'DEBUG', 'propagate': False }, # 'scripts': { # 指令碼專用日誌 # 'handlers': ['scprits_handler'], # 'level': 'INFO', # 'propagate': False # }, } }