python 3ログモジュール

5119 ワード

一、loggingモジュール
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