問題タブ [log4perl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - log4perl の出力を読みやすくするにはどうすればよいですか?
log4perlを使用する場合、使用しているデバッグ ログのレイアウトは次のとおりです。
これにより、非常に詳細なデバッグ ログが生成されます。次に例を示します。
これはうまく機能し、優れたデバッグ データを提供します。
ただし、デバッグ ログの各行には、異なる関数名、pid の長さなどが含まれます。これにより、各行のレイアウトが異なり、デバッグ ログの読み取りが必要以上に難しくなります。
デバッグ メタデータ (実際のログ メッセージまでのすべて) の最後にスペース/タブが埋め込まれ、実際のメッセージがテキストの同じ列から始まるように、log4perl で行をフォーマットする方法はありますか?
perl - Log4perlでstdoutおよびstderrへの出力を抑制するにはどうすればよいですか?
私は私のロガーを初期化するためにこのサブを持っています:
ログファイルにloginfoを入れたいだけです。これがstdoutにログに記録されないようにするにはどうすればよいですか?
perl - 構成に関する Log4perl のドキュメントはどこにありますか?
私は Perl を初めて使用し、新しい CR を使用しているときに、 Log4perlパッケージを使用している Perl コードに行き詰まりました。
すでに開発されたコードはこのパッケージを使用しており、このパッケージの構成ファイルには次の構成があります。
構成ファイル内のこれらのパラメーターに関する情報を取得して、変更することはできますか?
perl - 特定のクラスのLog4perl出力を無効にするにはどうすればよいですか?
プロジェクトでLog4perlを使用したいのですが、特定のクラス(この場合はNet :: Amazon)では無効にします。これは簡単なことだと思いましたが、どういうわけか失敗しました。
使ってみました
残念ながら、Net::Amazonのデバッグメッセージはまだ端末に出力されます。何故ですか?そして、私はここで何が間違っているのですか?
perl - Log4perl で INFO レベルのみをログに記録するにはどうすればよいですか?
log4perl の構成ファイルには、そのレベル以上のすべての呼び出しをログに記録するしきい値オプションがあります。1 種類の通話のみをログに記録するように設定するオプションはありますか? レベル「INFO」の通話のみをログに記録したい。
ありがとう。
perl - Perl の警告を Log4perl ログに記録するにはどうすればよいですか?
Log4perlは、ロギング用の優れたツールです。
warningsプラグマも不可欠なツールです。
ただし、Perl スクリプトがデーモンとして実行されている場合、Perl の警告は、関連するプログラムの Log4perl ログ ファイルではなく、誰も見ることができない STDERR に出力されます。
Perl の警告を Log4perl ログに記録する方法はありますか?
たとえば、次のコードは問題なくログ ファイルに記録されますが、これがデーモンとして実行された場合、Perl の警告はログに含まれません。
これはまだSTDERRに出力されます:
また、ログ ファイルはこの警告をキャッチしません。
perl - Log4perlとMooseで行番号を報告するにはどうすればよいですか?
Mooseで使用する場合、Log4perlに、常に行番号99のメソッド::委任ではなく、ログイベントの行番号とパッケージ/クラスを正しく表示させることは可能ですか?
私の場合、属性isa Log :: Log4perl :: Loggerを作成し、さまざまなログレベル(log、warn、error、...)をクラスに委任しました。これを行うと、Delegation.pmもファイルとして表示されます。
ありがとう!
perl - ユーティリティクラス内のロギング
DBIなどのいくつかのユーティリティクラス内でロギングを採用したいと思います。Log :: Log4perlでそれを行うためのベストプラクティスは何ですか?
DBI(たとえばMyDBI
)をサブクラス化し、そこでいくつかのメソッドをオーバーライドして、ロギングを実行させるのは問題ないと思います。しかし、カテゴリには問題があります。でロガーを作成する場合
その場合、すべてのログエントリが属し、MyDBI
それらをフィルタリングするのは困難です。MyDBI
したがって、呼び出し側モジュール(たとえば)からロガーを渡す方が良いように思われMyModule
ます。そうすれば、カテゴリーは意味的に正しくなります。最初の質問、それは一般的に大丈夫ですか?つまり、そのようなアプローチに関して隠されたサンゴ礁はありますか?
2番目の質問、ロガーを渡す方法はMyDBI
?グローバル変数を宣言するアイデアがあります。たとえば$MyDBI::logger
、呼び出し元のメソッドで設定します。
グローバル変数には伝統的な嫌悪感があります。もっと良い方法を考えられますか?
編集:もちろん、最良のコードはコードなしです。caller
継承を考慮に入れれば十分でしょう。
3番目の質問は、両方のカテゴリにログインすることは可能MyDBI
ですMyModule
か。階層的に関連がない場合は、Log :: Log4perlを使用してログインできますか?
perl - 実行中に Log4perl が警告を発したかどうかを確認するにはどうすればよいですか?
私は多くのスクリプトでLog4perlを広範囲に使用してきました。WARN
これらのスクリプトを拡張して、またはERROR
メッセージがログに記録された場合にエラー コードを設定したいと考えています。既存のドキュメントに基づいてこれを行う明白な方法を見つけることができませんでした。
WARN
すべてのメッセージまたはERROR
ログメッセージにチェックを追加するために、既存のスクリプトを力ずくで書き直すことは避けたいと思います。可能であれば、次の疑似コードのように、スクリプトを終了する前に処理したいと思います。
Log4Perl を呼び出して、現在のロガーに特定のレベルの問題メッセージがあるかどうかを判断する簡単な方法はありますか?