1. 程式人生 > 程式設計 >Django自帶日誌 settings.py檔案配置方法

Django自帶日誌 settings.py檔案配置方法

Django settings.py檔案配置部分:

# logging配置
log_file = '/home/nagain/learn/log'
log_file_path = os.path.join(log_file,'all.log')
if not os.path.exists(log_file):
 os.mkdir(log_file)
 os.mknod(log_file_path) # 建立空檔案
 
LOGGING = {
 'version': 1,'disable_existing_loggers': True,'formatters': {
  # 日誌格式
  'standard': {
   'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] '
      '[%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'
  }
 },'filter': {
 
 },'handlers': {
  'mail_admins': {
   'level': 'ERROR','class': 'django.utils.log.AdminEmailHandler','include_html': True,},'default': {
     'level': 'DEBUG','class': 'logging.handlers.RotatingFileHandler','filename': log_file_path,# 日誌輸出檔案
     'maxBytes': 1024*1024*5,# 檔案大小
     'backupCount': 5,# 備份份數
     'formatter': 'standard',#使用哪種formatters日誌格式
  },'error': {
     'level': 'ERROR','maxBytes': 1024*1024*5,'backupCount': 5,'formatter': 'standard','console': {
     'level': 'DEBUG','class': 'logging.StreamHandler','formatter': 'standard'
    },'request_handler': {
     'level': 'DEBUG','scprits_handler': {
     'level': 'DEBUG',}
 },'loggers': {
  'django': {
     'handlers': ['default','console'],# 來自上面定義的handlers內容
      'level': 'INFO','propagate': False # 是否繼承父類的log資訊
  },'scripts': {
   'handlers': ['scprits_handler'],'level': 'INFO','propagate': False
  },# sourceDns.webdns.views 應用的py檔案
  'sourceDns.webdns.views': {
     'handlers': ['default','error'],'propagate': True
  },'sourceDns.webdns.util': {
     'handlers': ['error'],'level': 'ERROR',# 'django.request': {
  #    'handlers': ['mail_admins'],#    'level': 'ERROR',#    'propagate': False,#   },}
}

專案檢視函式views.py使用例項:

# 日誌
import logging
logger = logging.getLogger('sourceDns.webdns.views') # 獲取settings.py配置檔案中logger名稱
def index(request):
 a = reverse('index:article')
 logger.info(a)
 return HttpResponseRedirect(a)

注意:錯誤日誌記錄級別level

級別 描述
CRITICAL 50 關鍵錯誤/訊息
ERROR 40 錯誤
WARNING 30 警告訊息
INFO 20 通知訊息
DEBUG 10 除錯
NOTSET 0 無級別

注意:記錄器 handler

關鍵字引數 描述
filename 將日誌訊息附加到指定檔名的檔案
filemode 指定用於開啟檔案模式
format 用於生成日誌訊息的格式字串
datefmt 用於輸出日期和時間的格式字串
level 設定記錄器的級別
stream 提供開啟的檔案,用於把日誌訊息傳送到檔案。

注意: format日誌訊息顯示格式

格式 描述
%(name)s 記錄器的名稱
%(levelno)s 數字形式的日誌記錄級別
%(levelname)s 日誌記錄級別的文字名稱
%(filename)s 執行日誌記錄呼叫的原始檔的檔名稱
%(pathname)s 執行日誌記錄呼叫的原始檔的路徑名稱
%(funcName)s 執行日誌記錄呼叫的函式名稱
%(module)s 執行日誌記錄呼叫的模組名稱
%(lineno)s

執行日誌記錄呼叫的行號

%(created)s 執行日誌記錄的時間
%(asctime)s 日期和時間
%(msecs)s 毫秒部分
%(thread)d 執行緒ID
%(threadName)s 執行緒名稱
%(process)d 程序ID
%(message)s 記錄的訊息

注意: 內建處理器

logging模組提供了一些處理器,可以通過各種方式處理日誌訊息。使用addHandler()方法將這些處理器新增給Logger物件。另外還可以為每個處理器配置它自己的篩選和級別。

handlers.DatagramHandler(host,port):傳送日誌訊息給位於制定host和port上的UDP伺服器。
 
handlers.FileHandler(filename):將日誌訊息寫入檔案filename。
 
handlers.HTTPHandler(host,url):使用HTTP的GET或POST方法將日誌訊息上傳到一臺HTTP 伺服器。
 
handlers.RotatingFileHandler(filename):將日誌訊息寫入檔案filename。如果檔案的大小超出maxBytes制定的值,那麼它將被備份為filename1。

*****以上內容也是自己查詢通過自己測試是可行的,如果想要了解更加詳細,請自行檢視神器(django官方文件)*****

這篇Django自帶日誌 settings.py檔案配置方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。