ホームページ > バックエンド開発 > Python チュートリアル > Python でのロギング ライブラリの使用の概要

Python でのロギング ライブラリの使用の概要

黄舟
リリース: 2017-10-18 11:02:11
オリジナル
1742 人が閲覧しました

Python のロギング モジュールは、サードパーティのモジュールやアプリケーションで使用できる一般的なロギング システムを提供します。この記事では、Python でのロギング ライブラリの使用に関する知識の概要を主に紹介します。参照できますので、以下を見てみましょう。

前書き

最近、仕事の都合上、Python スクリプトをいくつか書いていました。情報を出力するために常に print を使用するのは非常に低調な気がするので、時間をかけて Python のログ ライブラリを学習して出力しました。ログをエレガントに記録します。以下では多くを説明しません。詳細な紹介を見てみましょう。

1. ログを画面に印刷するだけです:


import logging

logging.debug('This is debug message')  #debug
logging.info('This is info message')   #info
logging.warning('This is warning message') #warn
ログイン後にコピー

画面に印刷します: WARNING:root:This is warning message

デフォルトでは、警告レベルのログが印刷されます

  • DEBUG: 詳細情報、デバッグ情報。

  • 情報: すべてが期待どおりに動作していることを確認します。

  • 警告: 予期しないことが起こったか、近い将来に問題が発生することを示します (「ディスクがいっぱい」など)。ソフトウェアはまだ正常に動作しています。

  • エラー: より深刻な問題により、ソフトウェアは一部の機能を実行できなくなりました。

  • クリティカル: ソフトウェアが実行できなくなったことを示す重大なエラー。

2. BasicConfig 関数を使用してログの入力形式と方法を設定します


import logging

logging.basicConfig(level=logging.DEBUG,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt='%Y-%m-%d %a %H:%M:%S',
    filename='test.log',
    filemode='w')
 
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
ログイン後にコピー

上記のコードは画面にログを出力しませんが、現在のディレクトリに test.log を生成します。ログ ファイル、ログはログ ファイルに出力されます:

2017-10-16 Mon 10:05:17 testlogging.py[line:25] DEBUG これはデバッグ メッセージです

2017-10-16 Mon 10: 05:17 testlogging.py[line:26] INFO これは情報メッセージです

2017-10-16 Mon 10:05:17 testlogging.py[line:27] WARNING これは警告メッセージです

  • logging .basicConfig 関数のパラメータ:

  • filename: ログファイル名を指定します

  • filemode: file 関数と同じ意味で、ログファイルのオープンモード、'w' または 'a' を指定します

  • format: 出力フォーマットとコンテンツを指定します。format は、上記の例に示すように、多くの有用な情報を出力できます。 ()

level: ログレベルを設定します。デフォルトはログ記録です。WARNING

  • stream: ログの出力ストリームを指定します。sys.stderr、sys.stdout、またはファイルへの出力を指定できます。デフォルトの出力はsys.stderrです。ストリームとファイル名を同時に指定した場合、ストリームは無視されます

  • 3. ログを画面とログファイルに同時に出力します
  •  %(levelno)s: 打印日志级别的数值
     %(levelname)s: 打印日志级别名称
     %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
     %(filename)s: 打印当前执行程序名
     %(funcName)s: 打印日志的当前函数
     %(lineno)d: 打印日志的当前行号
     %(asctime)s: 打印日志的时间
     %(thread)d: 打印线程ID
     %(threadName)s: 打印线程名称
     %(process)d: 打印进程ID
     %(message)s: 打印日志信息
    ログイン後にコピー
  • 上記のコードを挿入して、同時に画面にログを印刷します

画面に印刷します: root : INFO これは情報メッセージです

root : WARNING これは警告メッセージです

ファイルに印刷:

2017-10-16 Mon 10:20:07 testlogging.py[line:46] DEBUG これはデバッグ メッセージです

2017 -10-16 Mon 10:20:07 testlogging.py[line :47] INFO これは情報メッセージです

2017-10-16 Mon 10:20:07 testlogging.py[line:48] WARNING これは警告メッセージです


4。


#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
ログイン後にコピー

ログ形式


%(asctime)s 年-月-日 時-分-秒、ミリ秒 2013-04-26 20 :10:43,745


%(filename)s ファイル名、ディレクトリを除く

%(pathname)s ディレクトリ名、フルパス


%(funcName)s 関数名

  • %(levelname)s レベル名

  • %(lineno)d 行番号

  • %(module)s モジュール名

  • %(message)s メッセージ本文

  • %(name)s ログモジュール名

  • %(process)d プロセス ID

  • % (processName)s プロセス名

  • %(thread)d スレッド ID

  • %(threadName)s スレッド名

  • テスト構成ファイル

  • #logger.conf
    [loggers]
    #定义logger模块,root是父类,必需存在的,其它的是自定义。 
    keys=root,infoLogger,warnlogger
    
    [logger_root] 
    level=DEBUG       #level  级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL
    handlers=infohandler,warnhandler #handlers 处理类,可以有多个,用逗号分开
    
    [logger_infoLogger]     #[logger_xxxx] logger_模块名称
    handlers=infohandler
    qualname=infoLogger     #qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。
    propagate=0       #propagate 是否继承父类的log信息,0:否 1:是
    
    [logger_warnlogger]
    handlers=warnhandler
    qualname=warnlogger
    propagate=0
    
    ###############################################
    #定义handler
    [handlers]
    keys=infohandler,warnhandler
    
    [handler_infohandler]
    class=StreamHandler     #class handler类名
    level=INFO       #level 日志级别
    formatter=form02      #formatter,下面定义的formatter
    args=(sys.stdout,)     #args handler初始化函数参数
    
    [handler_warnhandler]
    class=FileHandler
    level=WARN
    formatter=form01
    args=('logs/deploylog.log', 'a')
    
    ###############################################
    # 定义格式化输出
    [formatters]
    keys=form01,form02
    
    [formatter_form01]
    format=%(message)s %(asctime)s
    datefmt=%Y-%m-%d %H:%M:%S
    
    [formatter_form02]
    format=%(asctime)s %(levelname)s %(message)s
    datefmt=%Y-%m-%d %H:%M:%S
    ログイン後にコピー
  • 概要

  • 以上がPython でのロギング ライブラリの使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート