Python loggingモジュールの原理解析と応用


一、ログログモジュールの等級
一般的なロゴレベルは、上から下までです。
CRITICAL(CRITICAL)ERROR(WARNING)INFO(INFO))DEBUGは、デフォルトレベルはWARNING(WARNING)です。
ログレベル(level)
説明
CRITICAL
重大なエラーが発生して、アプリケーションが運転を続行できなくなった場合に記録された情報
ERROR
より深刻な問題により、機能が正常に動作しない場合に記録される情報があります。
WARNING
ディスクの空き容量が低いなど、望ましくないことが発生した場合に記録された情報ですが、アプリケーションは正常に実行されます。
FO
情報の詳細はDEBUGに次ぐもので、通常は肝心なノード情報だけを記録して、すべては私達の予想通りに作業していることを確認します。
DEBUG
最も詳しいログ情報は、典型的なアプリケーションシーンが問題診断です。
二、ロゴモジュールの使い方紹介
logingモジュールは、2つのログを記録する方法を提供しています。
  • の第一の方法は、logingを使用して提供されるモジュールレベルの関数である。
  • の第二の方法はロギングログシステムを使用する四つのコンポーネントである。
  • 実は、logingが提供するモジュールレベルのログ記録関数も、logingログシステム関連のパッケージにすぎないです。
    (1)logingモジュールで定義されているモジュールレベルの一般的な関数
    関数
    説明
    loging.debug(msg,*args,*kwargs)
    深刻なレベルのDEBUGのログを作成します。
    loging.info(msg,*args,**kwargs)
    深刻なレベルのINFOログを作成します。
    loging.warning(msg,*args,**kwargs)
    重大なレベルのWARNINGのログを作成します。
    loging.error(msg,*args,**kwargs)
    深刻なレベルのERRORのログを作成します。
    loging.critical(msg,*args,*kwargs)
    深刻なレベルのCRITICALのログを作成します。
    loging.logs(level,*args,*kwargs)
    深刻なレベルのレベルがlevelのログを作成します。
    loging.baic Config(**kwargs)
    root loggerを一括配置する
    loging.baicConfig(***kwargs)関数は、「記録するログレベル」、「ログフォーマット」、「ログ出力位置」、「ログファイルのオープンモード」などの情報を指定します。他のいくつかは、各レベルのログを記録するための関数です。
    (2)logingモジュールの4つのコンポーネント
    コンポーネント
    説明
    loggers
    アプリケーションコードを直接使用するインターフェースを提供します。
    ハンドル
    ログレコードを指定の目的地に送信するために使用します。
    filters
    より細かいサイズのログフィルタ機能を提供して、どのログが出力されるかを決定します。(他のログは無視されます。)
    フォーマット
    ログ情報の最終出力フォーマットを制御します。
    三、カスタムロギングモジュール類
    
    # testLog1.py
    
    import logging
    import time
    
    class Logger():
    
      def __init__(self, logger, level=logging.DEBUG):
        '''     :    Logger   
        : logger: logger 
        : level:     
        '''
    
        #     logger
        self.logger = logging.getLogger(logger)
        self.logger.setLevel(level)
    
        #   handler     
        curr_time = time.strftime("%Y-%m-%d")
        self.LogFileName = 'log' + curr_time + '.txt'
        fmt = logging.Formatter('%(asctime)s - %(filename)s:[%(lineno)s] - [%(levelname)s] - %(message)s')
    
        # asctime:          
        # filename:         ,      
        # lineno:                  
        # evelname:                
        # message:          
    
        #     handler,         
        fh = logging.FileHandler(self.LogFileName)
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(fmt)
    
        #      handler,        
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(fmt)
    
        #  logger  handler
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)
    
        # level   
        # logger.setLevel > handler.setLevel > logging.basicConfig
    
    if __name__ == "__main__":
      log = Logger(__name__, level=logging.DEBUG)
      log.logger.debug('debug')
      log.logger.log(logging.DEBUG, 'debug')#   testLog1.py,        :2020-08-03 20:36:47,104 - testLog1.py:[117] - [DEBUG] - debug2020-08-03 20:36:47,104 - testLog1.py:[118] - [DEBUG] - debug#         :2020-08-03 20:36:15,982 - testLog1.py:[117] - [DEBUG] - debug2020-08-03 20:36:15,982 - testLog1.py:[118] - [DEBUG] - debug
    
    # testLog2.py
    
    from testLog1 import Logger
    import traceback
    
    log = Logger(__name__)
    def func():
      try:
        assert 1==2
      except Exception:
        log.logger.info('    ,      :{}'.format(traceback.format_exc()))    # traceback.format_exc()            
    
    if __name__ == "__main__":
      func()#   testLog2.py,        :2020-08-03 20:43:44,907 - testLog2.py:[11] - [INFO] -     ,      :Traceback (most recent call last):  File "E:/imooc/testLog.py", line 9, in func    assert 1==2AssertionError#         :2020-08-03 20:43:44,907 - testLog2.py:[11] - [INFO] -     ,      :Traceback (most recent call last):  File "E:/imooc/testLog.py", line 9, in func    assert 1==2AssertionError
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。