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
より細かいサイズのログフィルタ機能を提供して、どのログが出力されるかを決定します。(他のログは無視されます。)
フォーマット
ログ情報の最終出力フォーマットを制御します。
三、カスタムロギングモジュール類
一般的なロゴレベルは、上から下までです。
CRITICAL(CRITICAL)ERROR(WARNING)INFO(INFO))DEBUGは、デフォルトレベルはWARNING(WARNING)です。
ログレベル(level)
説明
CRITICAL
重大なエラーが発生して、アプリケーションが運転を続行できなくなった場合に記録された情報
ERROR
より深刻な問題により、機能が正常に動作しない場合に記録される情報があります。
WARNING
ディスクの空き容量が低いなど、望ましくないことが発生した場合に記録された情報ですが、アプリケーションは正常に実行されます。
FO
情報の詳細はDEBUGに次ぐもので、通常は肝心なノード情報だけを記録して、すべては私達の予想通りに作業していることを確認します。
DEBUG
最も詳しいログ情報は、典型的なアプリケーションシーンが問題診断です。
二、ロゴモジュールの使い方紹介
logingモジュールは、2つのログを記録する方法を提供しています。
(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
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。