python 3ログモジュール
5119 ワード
一、loggingモジュール
Pythonにはログを直接記録できるモジュールloggingがあります
logging.basicConfig()関数の具体的なパラメータ:filename:指定したファイル名はFiledHandlerを作成し、指定したファイルにログが格納されます.filemode:ファイルの開き方filenameを指定するときにこのパラメータを使用します.デフォルト値は「w」で「a」も指定できます.format:handlerが使用するログ表示フォーマットを指定します.Datefmt:日付時刻フォーマットを指定します.、フォーマットリファレンスstrftime時間フォーマット(以下)level:rootloggerのログレベルstreamの設定:指定したstreamでStreamHandlerを作成します.sysに出力を指定できます.stderr,sys.stdoutまたはファイル、デフォルトsys.stderr. filenameとstreamの2つのパラメータが同時にリストされている場合、streamパラメータは無視されます.
formatパラメータで使用できるフォーマット情報:
%(name)s
ロガーの名前
%(levelno)s
数値形式のログ・レベル
%(levelname)s
テキスト形式のログ・レベル
%(pathname)s
ログ出力関数を呼び出すモジュールの完全なパス名は、ない可能性があります.
%(filename)s
ログ出力関数を呼び出すモジュールのファイル名
%(module)s
呼び出しログ出力関数のモジュール名
%(funcName)s
呼び出しログ出力関数の関数名
%(lineno)d
ログ出力関数を呼び出す文が存在するコード行
%(created)f
現在時刻は、UNIX標準の時間を表す浮動小数点数で表します
%(relativeCreated)d
ログ情報の出力時のロガー作成以降のミリ秒数
%(asctime)s
文字列形式の現在時刻.デフォルトのフォーマットは「2003-07-08 16:49:45896」です.カンマの後ろはミリ秒です
%(thread)d
スレッドID.ないかもしれない
%(threadName)s
スレッド名.ないかもしれない
%(process)d
プロセスID.ないかもしれない
%(message)s
ユーザ出力メッセージ
二、loggingモジュールテスト
1、標準出力にログを印刷する
出力結果
デフォルトではPythonのloggingモジュールが標準出力にログを印刷し、WARNINGレベル以上のログのみが表示されていることがわかります.デフォルトのログのフォーマットは次のとおりです.
ログ・レベル:Logger名:ユーザー出力メッセージ
2、ログファイルをファイルに入力する
この3行のコードを実行すると、Pythonをインストールするディレクトリにlogが表示されます.txtファイル、ファイル内容
3、カスタムフォーマット、出力ログファイル
出力結果:
ログファイルが自動的に生成され、ログファイルと実行ファイルが同じフォルダにあり、ファイル名logging.log
2017-10-23 Monday 11:37:59 hgghf : DEBUG logger debug message 2017-10-23 Monday 11:37:59 hgghf : INFO logger info message 2017-10-23 Monday 11:37:59 hgghf : WARNING logger warning message 2017-10-23 Monday 11:37:59 hgghf : ERROR logger error message 2017-10-23 Monday 11:37:59 hgghf : CRITICAL logger critical message
出力パスを変更するには、次の手順に従います.
4、カスタム出力位置
実行スクリプトがD:pyworkpeaceの下にあるため、出力ファイルはDディスクtmpフォルダの下test.ロゴ、内容は以下の通りです.
Mon, 23 Oct 2017 15:00:05 tupian.py[line:11] DEBUG debug message Mon, 23 Oct 2017 15:00:05 tupian.py[line:12] INFO info message Mon, 23 Oct 2017 15:00:05 tupian.py[line:13] WARNING warning message Mon, 23 Oct 2017 15:00:05 tupian.py[line:14] ERROR error message Mon, 23 Oct 2017 15:00:05 tupian.py[line:15] CRITICAL critical message
Pythonにはログを直接記録できるモジュールloggingがあります
#
# CRITICAL 50
# ERROR 40
# WARNING 30
# INFO 20
# DEBUG 10
logging.basicConfig()関数の具体的なパラメータ:filename:指定したファイル名はFiledHandlerを作成し、指定したファイルにログが格納されます.filemode:ファイルの開き方filenameを指定するときにこのパラメータを使用します.デフォルト値は「w」で「a」も指定できます.format:handlerが使用するログ表示フォーマットを指定します.Datefmt:日付時刻フォーマットを指定します.、フォーマットリファレンスstrftime時間フォーマット(以下)level:rootloggerのログレベルstreamの設定:指定したstreamでStreamHandlerを作成します.sysに出力を指定できます.stderr,sys.stdoutまたはファイル、デフォルトsys.stderr. filenameとstreamの2つのパラメータが同時にリストされている場合、streamパラメータは無視されます.
formatパラメータで使用できるフォーマット情報:
%(name)s
ロガーの名前
%(levelno)s
数値形式のログ・レベル
%(levelname)s
テキスト形式のログ・レベル
%(pathname)s
ログ出力関数を呼び出すモジュールの完全なパス名は、ない可能性があります.
%(filename)s
ログ出力関数を呼び出すモジュールのファイル名
%(module)s
呼び出しログ出力関数のモジュール名
%(funcName)s
呼び出しログ出力関数の関数名
%(lineno)d
ログ出力関数を呼び出す文が存在するコード行
%(created)f
現在時刻は、UNIX標準の時間を表す浮動小数点数で表します
%(relativeCreated)d
ログ情報の出力時のロガー作成以降のミリ秒数
%(asctime)s
文字列形式の現在時刻.デフォルトのフォーマットは「2003-07-08 16:49:45896」です.カンマの後ろはミリ秒です
%(thread)d
スレッドID.ないかもしれない
%(threadName)s
スレッド名.ないかもしれない
%(process)d
プロセスID.ないかもしれない
%(message)s
ユーザ出力メッセージ
二、loggingモジュールテスト
1、標準出力にログを印刷する
import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
出力結果
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe D:/pyworkpeace/tupian.py 'https://www.tianyancha.com/login'
WARNING:root:warning message
Process finished with exit code 0
デフォルトではPythonのloggingモジュールが標準出力にログを印刷し、WARNINGレベル以上のログのみが表示されていることがわかります.デフォルトのログのフォーマットは次のとおりです.
ログ・レベル:Logger名:ユーザー出力メッセージ
2、ログファイルをファイルに入力する
import os
logging.basicConfig(filename=os.path.join(os.getcwd(),'log.txt'),level=logging.DEBUG)
logging.debug('this is a message')
この3行のコードを実行すると、Pythonをインストールするディレクトリにlogが表示されます.txtファイル、ファイル内容
DEBUG:root:this is a message
DEBUG:root:debug message
3、カスタムフォーマット、出力ログファイル
# -*-coding:utf-8-*-
import logging
def console_out(logFilename):
''''' Output log to file and console '''
# Define a Handler and set a format which output to file
logging.basicConfig(
level=logging.DEBUG, # log ,
format='%(asctime)s %(filename)s : %(levelname)s %(message)s', # log
datefmt='%Y-%m-%d %A %H:%M:%S', #
filename=logFilename, # log
filemode='w') # “w” “a”
# Define a Handler and set a format which output to console
console = logging.StreamHandler() # console handler
console.setLevel(logging.INFO) # handler
formatter = logging.Formatter('%(asctime)s %(filename)s : %(levelname)s %(message)s') # handler
console.setFormatter(formatter)
# Create an instance
logging.getLogger().addHandler(console) # handler
# Print information #
logging.debug('logger debug message')
logging.info('logger info message')
logging.warning('logger warning message')
logging.error('logger error message')
logging.critical('logger critical message')
if __name__ == "__main__":
console_out('logging.log')
出力結果:
ログファイルが自動的に生成され、ログファイルと実行ファイルが同じフォルダにあり、ファイル名logging.log
2017-10-23 Monday 11:37:59 hgghf : DEBUG logger debug message 2017-10-23 Monday 11:37:59 hgghf : INFO logger info message 2017-10-23 Monday 11:37:59 hgghf : WARNING logger warning message 2017-10-23 Monday 11:37:59 hgghf : ERROR logger error message 2017-10-23 Monday 11:37:59 hgghf : CRITICAL logger critical message
出力パスを変更するには、次の手順に従います.
filename='/tmp/test1.log', # log
, D:\tmp
4、カスタム出力位置
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='/tmp/test.log',
filemode='w')
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
実行スクリプトがD:pyworkpeaceの下にあるため、出力ファイルはDディスクtmpフォルダの下test.ロゴ、内容は以下の通りです.
Mon, 23 Oct 2017 15:00:05 tupian.py[line:11] DEBUG debug message Mon, 23 Oct 2017 15:00:05 tupian.py[line:12] INFO info message Mon, 23 Oct 2017 15:00:05 tupian.py[line:13] WARNING warning message Mon, 23 Oct 2017 15:00:05 tupian.py[line:14] ERROR error message Mon, 23 Oct 2017 15:00:05 tupian.py[line:15] CRITICAL critical message