Pythonロギングモジュールのロギング
モジュールレベルの関数
logging.getLogger([name]): ロガーオブジェクトを返します。名前が指定されていない場合は、ルートロガーが返されます
logging.debug()、logging.info()、logging.warning ()、logging.error()、logging.critical(): ルート ロガーのログ レベルを設定します
logging.basicConfig(): デフォルトのフォーマッタを使用してロギング システムの StreamHandler を作成し、基本構成を設定して追加しますルートロガーに送信します
Logger
logging .getLogger([name])
名前が指定されていない場合は、ルートロガーを返します。
すべてのプログラムは、情報を出力する前にロガーを取得する必要があります。ロガーは通常、プログラムのモジュール名に対応します。たとえば、チャット ツールのグラフィカル インターフェイス モジュールは次のようにロガーを取得できます:
LOG=logging.getLogger("chat.gui")
そして、コア モジュールは次のように取得できます。次のように:
LOG=logging .getLogger("chat.kernel")
Logger.setLevel(logging.WARNING): WARNING より低いレベルは無視されます
Logger.addFilter(filt) )、Logger.removeFilter(filt): 指定されたフィルターを追加または削除します
Logger.addHandler(hdlr)、Logger.removeHandler(hdlr): 指定されたハンドラーを追加または削除します
Handlers
handlerオブジェクトが担当します関連情報を指定された宛先に送信します。ファイル、画面、ネットワーク、ソケットなどを指定できます。
Handler.setLevel(lel): 処理する情報のレベルを指定します。 lel レベル未満の情報は無視されます。
Handler.setFormatter(): を選択します。このハンドラーの出力形式
Handler.addFilter(filt)、Handler.removeFilter(filt): フィルターオブジェクトを追加または削除します
ログは画面に出力されます
import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') 返回: WARNING:root:This is warning message 打印到屏幕
デフォルトでは、logging はログを画面に出力します
logging.basicConfig関数パラメータ:
filename: ログファイル名を指定します
filemode: file関数と同じ意味で、ログファイルを開くモード、'w'または'a'を指定します
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='myapp.log', filemode='w') logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') ./myapp.log文件中内容为: Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message 修改输出格式
%(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: 打印日志信息 datefmt: 指定时间格式,同time.strftime() level: 设置日志级别,默认为logging.WARNING stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略 日志格式
logging.StreamHandler: 日志输出到流,可以是sys.stderr、sys.stdout或者文件 logging.FileHandler: 日志输出到文件 日志回滚方式,实际使用时用RotatingFileHandler和TimedRotatingFileHandler logging.handlers.BaseRotatingHandler logging.handlers.RotatingFileHandler logging.handlers.TimedRotatingFileHandler logging.handlers.SocketHandler: 远程输出日志到TCP/IP sockets logging.handlers.DatagramHandler: 远程输出日志到UDP sockets logging.handlers.SMTPHandler: 远程输出日志到邮件地址 logging.handlers.SysLogHandler: 日志输出到syslog logging.handlers.NTEventLogHandler: 远程输出日志到Windows NT/2000/XP的事件日志 logging.handlers.MemoryHandler: 日志输出到内存中的制定buffer logging.handlers.HTTPHandler: 通过"GET"或"POST"远程输出到HTTP服务器 logging方法
import logging # create logger def logger(log_type): logger = logging.getLogger(log_type) # 创建Logger对象,类型是'TEST-LOG' logger.setLevel(logging.WARNING) # 设置最低的日志级别,此级别覆盖ch and fh的级别 # 创建输出到控制台处理程序,并设置级别为DEBUG ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 控制输出到屏幕的级别 # 创建输出到文件的处理程序,并设置级别 fh = logging.FileHandler("access.log") fh.setLevel(logging.WARNING) # 创建日志格式 formatter_Stream = logging.Formatter('%(name)s - %(levelname)s - %(message)s') formatter_File = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # add formatter to ch and fh ch.setFormatter(formatter_Stream) fh.setFormatter(formatter_File) # add ch and fh to logger logger.addHandler(ch) logger.addHandler(fh) return logger eee = logger('EEE') rrr = logger('RRR') rrr.debug('debug message') rrr.info('info message') rrr.warning('warn message') eee.error('error message') eee.critical('critical message') 代码
2017-02-21 21:35:05,700 - RRR - 警告 - 警告メッセージ
2017-02-21 21:35:05,700 - EEE - CRITICAL - クリティカル メッセージ
呼び出し時のパラメータの形式logging.getLogger() は「A.B.C」に似ています。この形式はフィルターを構成するために使用されます。フィルタを追加すると、ログは出力前にフィルタによって処理されます。フィルタ「AAA.BBB」では、名前が「AAA.BBB」で始まるロガーのみが情報を出力できます。フィルターが拒否した場合、ログは出力されません
import logging def logger(log_type): logger = logging.getLogger(log_type) # 创建Logger对象,类型是'TEST-LOG' logger.setLevel(logging.DEBUG) # 此级别覆盖ch and fh的级别 # 创建输出到控制台处理程序,并设置级别为DEBUG ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 控制输出到屏幕的级别 # 设置过滤器 filter = logging.Filter('AAA.BBB.CCC') ch.addFilter(filter) formatter_Stream = logging.Formatter('%(name)s - %(levelname)s - %(message)s') ch.setFormatter(formatter_Stream) logger.addHandler(ch) # ch加入logger return logger eee = logger('AAA.BBB.CCC') rrr = logger('AAA.BBB.DDD') rrr.error('debug message') rrr.error('info message') eee.error('critical message') eee.error('critical message') 代码
ログをカット
import logging from logging import handlers # create logger def logger(log_type): logger = logging.getLogger(log_type) logger.setLevel(logging.DEBUG) fh = logging.FileHandler("access.log") fh.setLevel(logging.WARNING) # 按时间切割日志文件 fh = handlers.TimedRotatingFileHandler(filename='access.log', when='s', interval=10 ) formatter_File = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter_File) logger.addHandler(fh) return logger rrr = logger('AAA.BBB.DDD') rrr.error('debug message') rrr.error('info message') rrr.error('warn message') 代码
when:時間単位S秒M分H時間D日W毎週(間隔==0 時間 月曜日) 毎朝午前 0 時を表します
ルート ロガーを取得する方法。logging.getLogger() またはlogging.getLogger("") を通じてルート ロガー インスタンスを取得します。
levelroot ロガーのデフォルトのレベルは、logging です。警告
親子関係を表現する方法。ロガー名の命名方法により、ロガー間の親子関係を示すことができます。例:parent_logger =logging.getLogger('foo)。 ')child_logger =logging.getLogger( 'foo.bar')
有効レベルとは Loggerには有効レベルという概念があります。 ロガーが明示的にレベルを設定しない場合、親のレベルが使用されます。父親がレベルを明示的に設定しない場合は、父親の父親のレベルが使用され、以下同様です...最終的にルート ロガーに到達すると、レベルが設定されているはずです。デフォルトは、logging.WARNING です。子ロガーがメッセージを取得すると、そのメッセージをそのハンドラーに配布して処理するだけでなく、処理のためにすべての祖先ロガーにも渡します
Python ログ モジュールのロギング関連記事については、こちらをご覧ください。 PHP 中国語 Web サイトに注意してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonコードをSublimeテキストで実行するには、最初にPythonプラグインをインストールし、次に.pyファイルを作成してコードを書き込み、Ctrl Bを押してコードを実行する必要があります。コードを実行すると、出力がコンソールに表示されます。

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

メモ帳でPythonコードを実行するには、Python実行可能ファイルとNPPEXECプラグインをインストールする必要があります。 Pythonをインストールしてパスを追加した後、nppexecプラグインでコマンド「python」とパラメーター "{current_directory} {file_name}"を構成して、メモ帳のショートカットキー「F6」を介してPythonコードを実行します。
