Pythonログ処理モジュールのロゴ用法解析


logingモジュールはPython内蔵の標準モジュールで、主に運行ログを出力するために使用され、出力ログのレベル、ログ保存パス、ログファイルのロールバックなどを設定できます。
その主な利点は以下の通りである。
1.異なるログレベルを設定することで、releaseバージョンでは重要な情報だけを出力し、大量のデバッグ情報を表示する必要がない。
2.特にコードはサーバーで実行しています。問題が発生した時はログを見て分析してもいいです。
 logingモジュールの基本使用:
ログ名を設定
logger=logging.get Logger(log_)name
ロゴレベルを設定
logger.set Level(loging.info)
Handlerを作成して、ログファイルを書き込みます。
fh=loging.FileHandler(log_)file
ログレベルを設定します。デフォルトはloging.WARNINGです。
fh.set Levellevel
handlerの出力フォーマットを定義します。
formater=loging.Formater('%(asctime)s'(name)s[line:%(line no)d'(levelname)s')
fh.set Formater(formater)
ハンダを追加
logger.addHandler(fh)
フォーマット
  • %(levelno)s:ログレベルを印刷する数値
  • %(levelname)s:印刷ログレベル名
  • %(pathname)s:現在実行されているプログラムを印刷するルートは、sys.argv[0]
  • です。
  • %(filename)s:現在実行中のプログラム名を印刷する
  • %(funcName)s:ログを印刷する現在の関数
  • %d:ログを印刷する現在の行番号
  • %(asctime)s:ログを印刷する時間
  • %(thread)d:プリントスレッドID
  • %(threadName)s:プリントスレッド名
  • %(process)d:プリントプロセスID
  • %s:印刷ログ情報
  •   の例コードは以下の通りです。
    
    import logging
    import datetime
    import os
    
    #         
    logLevelDic={
      "info":logging.INFO,
      "debug":logging.DEBUG,
      "warning":logging.WARNING,
      "error":logging.ERROR
    }
    
    #       
    logSavePath=os.path.join(os.getcwd(),"logs")
    if not os.path.exists(logSavePath):
      os.makedirs(logSavePath,exist_ok=True)
    #     
    curTime=datetime.datetime.now().strftime("%Y%m%d")
    #           
    logFile=os.path.join(logSavePath,curTime+".SADCI.log")
    #     
    logLevel="error"
    
    class Logger:
      def __init__(self,logFile=logFile,logLevel=logLevelDic["error"]):
        self.logFile=logFile
        self.logLevel=logLevel
        #   logger  
        self.logger=logging.getLogger()
        #       
        self.logger.setLevel(self.logLevel)
        self.formatter=logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
        #   handlers    
        if not self.logger.handlers:
          #      
          consoleStream=logging.StreamHandler()
          consoleStream.setLevel(self.logLevel)
          consoleStream.setFormatter(self.formatter)
          #     
          fileStream=logging.FileHandler(self.logFile,mode="a")
          fileStream.setLevel(self.logLevel)
          fileStream.setFormatter(self.formatter)
          self.logger.addHandler(consoleStream)
          self.logger.addHandler(fileStream)
    
    def MyLogger():
      return Logger(logFile=logFile,logLevel=logLevelDic[logLevel]).logger
    
    
    if __name__ == '__main__':
      MyLogger().error("test logg")
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。