Python——loggingモジュール

2173 ワード

多くのプログラムはログを記録する必要があり、ログに含まれる情報は正常なプログラムアクセスログであり、エラーや警告などの情報出力もある可能性があります.pythonのloggingモジュールは標準的なログインタフェースを提供しています.それによって様々なフォーマットのログを格納することができます.loggingのログはdebug()、info()、warning()、error()、critical()の5つのレベルに分けることができます.
等級の高低
CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTEST
loggingレベルの設定
loggingを使用するとレベル設定があり、デフォルト設定はwarningレベルです.つまりwarningより高いlogはログレベルの設定を印刷します.
logging.basicConfig(level=logging.DEBUG,
  format = '%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)'
  datefmt = '%a,%d,%b,%Y,%H:%M:%S',
  filename='/tmp/test.log'
  filemode='w'
)

  • filemode:ファイルの開き方filenameを指定するときにこのパラメータを使用します.デフォルト値は「a」でw
  • にも指定できます.
    formatパラメータで使用可能なフォーマット列:%(name)s Loggerの名前%(levelno)s数値形式のログレベル%(levelname)sテキスト形式のログレベル%(pathname)sログ出力関数を呼び出すモジュールの完全なパス名%s(filename)sがログ出力関数を呼び出すモジュールのファイル名%(module)sがログ出力関数を呼び出すモジュール名%(funcName)sがログ出力関数を呼び出す関数名%(lineno)dがログ出力関数を呼び出す文があるコード行%(created)f現在時刻がない場合があります.UNIX規格の時間を表す浮動小数点数%dでログ情報を出力した場合の、Logger作成以降のミリ秒数%s文字列形式の現在時間.デフォルトのフォーマットは「2003-07-08 16:49:45896」です.カンマの後ろにはミリ秒%(thread)dスレッドIDがあります.%(threadName)sスレッド名がない場合があります.%dプロセスIDがない可能性があります.%(message)sユーザーが出力するメッセージがない可能性があります
    loggerオブジェクト
    モジュールレベルの関数
    import logging
    
    logger = logging.getLogger()
    #     handler,        
    fh = logging.FileHandler('test.log')
    
    #      handler,        
    ch = logging.StreamHandler()
    
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    
    logger.addHandler(fh) #logger        fh ch  
    logger.addHandler(ch)
    
    logger.debug('logger debug message')
    logger.info('logger info message')
    logger.warning('logger warning message')
    logger.error('logger error message')
    logger.critical('logger critical message')
    

    loggingライブラリには、Logger、Handler、Filter、Formatterの複数のコンポーネントがあります.Loggerオブジェクトはアプリケーションが直接使用できるインタフェースを提供し、Handlerは適切な宛先にログを送信し、Filterはログ情報をフィルタする方法を提供し、Formatterはログ表示フォーマットを指定する.
    logger.setLevel(logging.DEBUG)は、loggerのログレベルを設定するために表示されるので、デフォルトのログレベルWARNINGを使用し、