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:印刷ログ情報 の例コードは以下の通りです。
その主な利点は以下の通りである。
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)
フォーマット
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")
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。