1. 程式人生 > 程式設計 >python logging模組的使用詳解

python logging模組的使用詳解

  logging日誌模組:是用來記錄日誌的模組,一般記錄使用者在軟體中的操作

  使用方法:模板直接拿來用,手動修改

# logging的配置資訊(模板)
import os
import logging.config


# 定義三種日誌輸出格式 開始(模板,不用配置,直接拿來用)
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
         '[%(levelname)s][%(message)s]' # 其中name為get_logger中指定的名字
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
# 定義日誌輸出格式 結束


# (*****)注意1: log檔案的目錄(手動修改)
BASE_PATH = os.path.dirname(os.path.dirname(__file__))  # 獲取專案路徑
logfile_dir = os.path.join(BASE_PATH,'log')  # 存放log檔案的目錄
# (*****)注意2: log檔名(手動修改)
logfile_name = 'user.log'


# 如果不存在定義的日誌目錄就建立一個
if not os.path.isdir(logfile_dir):
  os.mkdir(logfile_dir)
# log檔案的全路徑
logfile_path = os.path.join(logfile_dir,logfile_name)


# (*****)注意3: log配置字典(模板,不用配置,直接拿來用)
LOGGING_DIC = {
  'version': 1,'disable_existing_loggers': False,'formatters': {
    'standard': {
      'format': standard_format
    },'simple': {
      'format': simple_format
    },},'filters': {},'handlers': {
    # 列印到終端的日誌
    'console': {
      'level': 'DEBUG','class': 'logging.StreamHandler',# 列印到螢幕
      'formatter': 'simple'
    },# 列印到檔案的日誌,收集info及以上的日誌
    'default': {
      'level': 'DEBUG','class': 'logging.handlers.RotatingFileHandler',# 儲存到檔案
      'formatter': 'standard','filename': logfile_path,# 日誌檔案
      'maxBytes': 1024 * 1024 * 5,# 日誌大小 5M
      'backupCount': 5,'encoding': 'utf-8',# 日誌檔案的編碼,再也不用擔心中文log亂碼了
    },'loggers': {
    # logging.getLogger(__name__)拿到的logger配置
    '': {
      'handlers': ['default','console'],# 這裡把上面定義的兩個handler都加上,即log資料既寫入檔案又列印到螢幕
      'level': 'DEBUG','propagate': True,# 向上(更高level的logger)傳遞
    },}


# (*****)注意4:定義日誌函式,傳入的引數可以是日誌資訊中的"使用者id"或者"使用者名稱字",也可以是某一型別的統稱
def get_logger(user_type):
  # 1.載入log配置字典到logging模組的配置中
  logging.config.dictConfig(LOGGING_DIC)
  # 2.獲取日誌物件
  # logger = logging.getLogger('user')
  # logger = logging.getLogger('bank')
  # logger = logging.getLogger('shop')
  logger = logging.getLogger(user_type)
  return logger

# 呼叫函式,記錄日誌# 通過logger日誌物件,呼叫內部的日誌列印
logger = get_logger('user')  # 這裡的引數為日誌資訊中的"使用者id"或者"使用者名稱字"
# 呼叫獲取日誌函式的日誌物件
# logger.debug('學習不要浮躁,一步一個腳印!')
logger.info('學習不要浮躁,一步一個腳印!')  # debug和info均為日誌等級,用info即可,info後面傳入的內容就是需要記錄日誌的內容

  注意:前三個注意點可以根據情況修改設定,第四個注意點是log的配置字典,無需修改,只需留意即可。

  執行結果:

[INFO][2020-10-22 20:23:07,405][04 logging模組.py:100]學習不要浮躁,一步一個腳印!

  logging模組應用輸出示例:

python logging模組的使用詳解

python logging模組的使用詳解

以上就是python logging模組的使用詳解的詳細內容,更多關於python logging模組的資料請關注我們其它相關文章!