内容:ガイド
序文
ログをカスタマイズする前に、次の情報を知っておく必要があります。
ログ コレクター: ログ情報を収集するためのコンテナとして理解できます。
ログ レベル (レベル): DEBUG、INFO、WARNING、ERROR、および CRITICAL
出力チャネル (ハンドル): コンソール出力、StreamHandle は
ログ情報をファイルに保存します: FileHandle
ログ形式 (Format):
通常、ログ時間 - ログ名 - ログ レベル名 - ファイル名 - 行番号 - ログ情報などの情報が含まれます。
例:
# 设置日志的输出格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s"
formatter = logging.Formatter(fmt)
注:
ロギング モジュールでは、デフォルトはルート ログ コレクターであり、デフォルトの出力レベルは次のとおりです: 警告
カスタムログの運用手順
ログ モジュールをインポートします: importlogging
ログ コレクターを作成します: logger =logging.getLogger("ログ コレクターの名前")
ログ コレクターのログ レベルを設定します: logger.setLevel(logging.INFO) #コレクターから情報へ
ログ コレクターの出力チャネルを作成します (最初の部分の内容に従って、ログ出力チャネルにはコンソール出力とファイル出力が含まれます)。以下では、紹介する例としてコンソール出力を使用します。ファイル出力は同様です。
ロギング用の出力チャネルを作成します: handle1 =logging.StreamHandle()
ログ出力チャネルのレベルは個別に設定できます: handle1.setLevel(logging.ERROR) このステップはオプションです。
注:
ログ出力チャネルのログ レベルが設定されていない場合、ログ コレクターによって設定されたレベルがデフォルトで使用されます。
ログ出力チャネルのログ レベルを個別に設定する必要がある場合、そのログ レベルはログ コレクター レベルよりも高くなければなりません。そうでない場合、設定は無効になります。
ログ出力のコンテンツ形式を設定します。
# 4、设置日志的输出格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s"
ormatter = logging.Formatter(fmt)
設定されたログ形式を作成された出力チャネルにバインドします。つまり、ログ形式を出力チャネルに関連付けます。
handler1.setFormatter(formatter)
設定した出力チャネルをログコレクターに追加します
logger.addHandler(handler1)
補足:ログ情報をファイルに出力する操作手順は同様ですが、上記とは少し異なります。
handler2 = logging.FileHandler(filename="xxx.log",encoding="utf-8")
コード
import logging
# 1、创建日志收集器
logger = logging.getLogger(name="login_test")
# 2、设置日志收集器的级别:警告级别
logger.setLevel(logging.WARN)
# 3、设置日志的输出渠道
# 3.1 控制台日志输出
handler1 = logging.StreamHandler()
# 3.2 文件日志输出
handler2 = logging.FileHandler(filename="my_log.log",encoding="utf-8")
# 单独设置输出渠道的日志级别
handler1.setLevel(logging.ERROR) # 可选
# 4、设置日志的输出格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s"
formatter = logging.Formatter(fmt)
# 5、关联3和4
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)
# 6、关联1和5
logger.addHandler(handler1)
logger.addHandler(handler2)
# 测试
logger.warning("登录失败警告")
logger.error("登录debug出错")
カスタムログのカプセル化
カスタムログの操作プロセスは比較的固定されているため、カスタムログをクラスにカプセル化できます。使用する必要がある場合は、このモジュールをインポートするだけで済みます。
ソース コードを表示すると、親クラスの debug()、info()、およびその他の関数を継承できるように、カプセル化されたクラスはlogging.Logger クラスを継承する必要があることがわかります。
2 番目の部分の操作プロセスから、このモジュールを導入するときに、異なるユーザーが異なるログ名、ログ レベル、およびログ ファイル情報を設定する可能性があるため、ユーザーはこれらのパラメーターを使用して、ログ オブジェクトをインスタンス化するときにログ オブジェクトを初期化できます。
カスタム ログ クラスを使用する必要がある場合は、このモジュールを導入するだけです。
import logging
# 对日志的操作进行封装
class MyLogger(logging.Logger):
def __init__(self,name,level,file=None):
super().__init__(name,level)
# 设置日志的输出渠道
handler1 = logging.StreamHandler()
# 设置日志的输出格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s"
formatter = logging.Formatter(fmt)
handler1.setFormatter(formatter)
# 添加日志的输出渠道
self.addHandler(handler1)
if file:
handler2 = logging.FileHandler(filename=file,encoding="utf-8")
handler2.setFormatter(formatter)
self.addHandler(handler2)
pass
pass
pass
以下は、私がまとめた 2023 年の最も完全なソフトウェア テスト エンジニア学習知識アーキテクチャ システム図です。 |
1. Pythonプログラミングの入門から習得まで
2.インターフェース自動化プロジェクトの実戦
3. Web自動化プロジェクトの実戦
4. アプリ自動化プロジェクトの実戦
5. 一流メーカーの再開
6. DevOps システムのテストと開発
7. 一般的に使用される自動テストツール
8、JMeterのパフォーマンステスト
9. まとめ(最後にちょっとしたサプライズ)
苦労は人生の背景であり、努力は夢を実現するためのステップです。理想の帆を上げて追求の旅に出よう、たとえ困難が多くても、粘り強く前に進んでください、もがいてこそ輝かしい一章を書き上げることができるのです。
夢を持つことは人生の財産であり、努力することが夢を実現する手段です。どんなに挫折や困難に遭遇しても、決して諦めずに勇敢に前進し、闘いだけが心に火を灯し、やがて栄光の向こう側へと導かれます。
困難は人生の試金石であり、闘争は達成への鍵です。自分自身に挑戦し、限界を超え、ハードワークの汗が輝かしい章を紡ぎます。自分の能力を信じ、果敢に前進し、初心を忘れず、努力を続けてください。