Python loggingモジュールによる実装の原理解析
1.概要
いくつかのソフトウェアの実行時に発生したイベントを追跡する方法は、コードの中でログの中のいくつかの方法を呼び出して、発生したことを記録することができます。
一つのイベントは、任意の変数データを含むことができるメッセージで記述することができる。
イベントは自分の重要度レベルがあります。
2.logingログシステムを使用する四つのコンポーネント loggersログ アプリケーションコードを直接使用するインターフェース を提供する。
handlesプロセッサ は、ログレコードを指定の目的地に送信するためのものである 。
filtersフィルタ 濾過して、どれらの出力のどれらのログ記録を決定して、残りは を見落とします。
フォーマット 制御ログ出力フォーマット 使用コードは以下の通りです
いくつかのソフトウェアの実行時に発生したイベントを追跡する方法は、コードの中でログの中のいくつかの方法を呼び出して、発生したことを記録することができます。
一つのイベントは、任意の変数データを含むことができるメッセージで記述することができる。
イベントは自分の重要度レベルがあります。
2.logingログシステムを使用する四つのコンポーネント
import os, time, logging, sys
from Common.plugs.get_config import r_config
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
if sys.platform == "win32":
ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\')
else:
ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini')
log_path = r_config(ENV_CONF_DIR, "log", "log_path")
class Log:
def __init__(self, log_path):
self.logName = os.path.join(log_path, '{0}.log'.format(time.strftime('%Y-%m-%d')))
def console_log(self, level, message):
# logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# handler, debug
debug_file = logging.FileHandler(self.logName, 'a+', encoding='utf-8')
debug_file.setLevel(logging.DEBUG)
# handler,
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# handler
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
debug_file.setFormatter(formatter)
ch.setFormatter(formatter)
# logger handler
logger.addHandler(debug_file)
logger.addHandler(ch)
#
if level == 'info':
logger.info(message)
elif level == 'debug':
logger.debug(message)
elif level == 'warning':
logger.warning(message)
elif level == 'error':
logger.error(message)
elif level == 'critical':
logger.critical(message)
logger.removeHandler(ch)
logger.removeHandler(debug_file)
debug_file.close()
def debug(self, message): # ,
self.console_log('debug', message)
def info(self, message): # DEBUG, ,
self.console_log('info', message)
def warning(self, message): # , ,
self.console_log('warning', message)
def error(self, message): # WARNING ,
self.console_log('error', message)
def critical(self, message): ,
self.console_log('critical', message)
if __name__ == '__main__':
Log(log_path).info("adasd")
Log(log_path).error("dsadasddasd")
'''
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。