問題タブ [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.

0 投票する
1 に答える
1676 参照

perl - Log :: Log4perlロガーを機能させるにはどうすればよいですか?

これが私が持っているコードです:

私がしたいのは、メッセージをファイルに記録し、レベルを表示させることだけです。私はそれが何のためであるかを理解しSimpleLayoutました。構成ファイルなしでこれを実行したいと思います。上記のコードを実行すると、次のメッセージが表示されます。

Log::Log4perl configuration looks suspicious: No loggers defined

0 投票する
2 に答える
1849 参照

perl - Log::Log4perl でセルフロギング モジュールを作成する

Log::Log4perlを使用して、Log4perlを初期化していない呼び出しスクリプトがない場合でも、その操作をファイルに記録するスマートなセルフロギング モジュールを作成する方法はありますか? ドキュメントからわかる限り、Log4perl を使用する唯一の方法は、構成から実行中のスクリプトで初期化することです。次に、Log4perl 呼び出しを実装するモジュールは、呼び出し元の Log4perl 構成に基づいて自分自身をログに記録します。

代わりに、モジュールが Log4perl のデフォルトの初期化構成を提供することを望みます。これにより、モジュールのカテゴリのデフォルトのファイル アペンダが提供されます。次に、必要に応じて呼び出し側で別の構成を使用して Log4perl を開始することで、この動作をオーバーライドできます。うまくいけば、すべてがうまくいくでしょう。

この種の防御的なロギング動作は可能ですか? または、ログに記録したいモジュールを呼び出すすべての .pl スクリプトで Log4perl の初期化に依存する必要がありますか?

0 投票する
1 に答える
217 参照

perl - 複数のプログラムからのログを 1 つのログにまとめる Log4Perl

2つのプログラムが同時に実行され、log4Perlを並行して呼び出すときに、並行ロギングを同期させて、複数のプログラムからのログを1つのファイルにバンドルできるCPAN上のロガーはありますか。
背景は、メールを書き込むカスタムアペンダーを使用しており、メールサーバーに問題が発生した場合のバックアップとして、すべてのメールを単一のファイルにバンドルしたいということです。

0 投票する
1 に答える
768 参照

perl - Log4perl: easy_init を使用して INFO ファイルと ERROR ファイルを分離する

現在、以下を使用して INFO 以上を STDOUT に送信しています。

ERROR 以上を STDERR に送信するにはどうすればよいですか?

0 投票する
2 に答える
2809 参照

perl - Log4perl: 実行時にアペンダーを動的にロードするにはどうすればよいですか?

実行時にログを管理するモジュールが必要ですが、すべてが単一のモノリシック構成ファイルを参照することはありません。さまざまなアクセス許可で実行されているプロセスを処理する場合、システム上のすべてのログにアクセスできるようにする必要がある各プロセスを処理したくありません。

ただし、Log4perl マニュアルには、実行時に構成ファイルから追加のアペンダーを初期化する方法に関するドキュメントはあまり見つかりません。http://metacpan.org/pod/Log::Log4perl::Appenderは add_appender メソッドを参照しますが、conf ファイルではなく、インスタンス化されたアペンダー オブジェクトで機能します。また、ロガー オブジェクトと logger->appender 関係も定義しません。

各パッケージを独自のconfから初期化しようとしましたが、初期化されるたびに既存の構成が単純に上書きされます。私がやりたいことは、次のようなものです。

構成を解析して現在の構成に追加するにはどうすればよいですか?

編集:パッケージ変数を使用する際の問題は、これがさまざまなクラスによって消費される Moose ロールにすぎないことです。ほとんどの場合、Making self-logging modules with Log::Log4perlの Ether の回答の MooseX::Role::Parameterized バージョンです。したがって、私のロガーはそれを使用するライブラリに組み込まれており、使用するたびに作業できるグローバル変数がありません。

けれど..

MooseX::Role::Parameterized ロール ブロックの外でグローバル変数を宣言すると、そのロールを使用するすべてのクラスが同じ conf 変数を使用することになりますか?

0 投票する
4 に答える
495 参照

perl - コマンド ライン オプションとその値の取得

スクリプトを実行した後、ユーザー コマンドからオプションとその引数をログに記録したいと考えています。

次のコマンドを検討してください。

...およびその他の多くのオプションと値。私の望ましい出力は次のようになります(log4perlを使用して):

そうです:

しかし、うまくいきません。助けてください。

0 投票する
2 に答える
902 参照

perl - log4perlにログディレクトリが存在しない場合、どうすれば作成できますか?

log4perlの初期化時にログディレクトリ(/home/hss/Data/log/DataImport.log)が存在しない場合、次のエラーが発生します。

log.confファイル以外の場所にディレクトリを指定せずに、それ自体でディレクトリを作成する方法はありますか?

0 投票する
0 に答える
173 参照

log4j - log4j と log4perl ログの結合

Runtime.exec を使用して Perl プログラムを起動し、それが戻るのを待ってから続行する Java アプリケーションがあります。Java アプリケーションからの log4j 出力と Perl プログラムからの log4perl 出力を同じファイルに出力したいと考えています。

私の log4j.properties ファイルには、次のものがあります。

log4j.appender.app=org.apache.log4j.DailyRollingFileAppender log4j.appender.app.File=/path/app.log log4j.appender.app.DatePattern=.yyyy-MM-dd log4j.appender.app.Append=false log4j.appender.app.layout=org.apache.log4j.PatternLayout log4.appender.app.layout.ConversionPattern=%5p [%t] (%F:%L) %m%n

(Java アプリケーションが再起動された場合に、同じ日の以前のログ ファイルを上書きしたいので、Append を false に設定しました。)

Perl プログラムには、次のものがあります。

Log::Log4perl->easy_init({level => $DEBUG, file => ">>/path/app.log"});

これにより、log4j 出力、続いて log4perl 出力が同じファイルに出力されますが、Perl プログラムが終了すると、Java アプリケーションはファイルに書き込めないように見えます。

どうにかして Java 側のファイル ハンドルをリセットできますか? ファイル名の代わりにロガーを Perl プログラムに渡すことはできますか?

両方からの出力をコンソールに送信してからファイルに保存することを考えましたが、コンソールとファイルにさまざまなレベルの出力を送信することを利用しているため、機能が失われます。

0 投票する
1 に答える
430 参照

perl - ログファイルを再作成する代わりに、USR1 が Perl を強制終了しているように見えるのはなぜですか?

Log4perlの厚意により、ログを追加した Perl スクリプトがあります。

スクリプト自体は長時間実行され、ログのローテーション/アーカイブも毎日実行する必要があります。

Log::Dispatch::FileRotatelogadmを使用するのではなく、組み込みの Solaris を使用することにしました。

  1. 必要な Perl の依存関係の数を減らそうとしています。
  2. アプリの外部で OS レベルでそれを行うことが、推奨される/最も堅牢なアプローチであるという印象を受けます。

ローテーションの一環として、Perl スクリプトでファイル ハンドルを更新する必要もあります。Log4perl FAQによると、USR1 シグナルをリッスンするように構成し、その上でファイル ハンドルを再作成できます。

しかし、何らかの理由で、USR1 シグナルを Perl プロセスに送信すると、Perl スクリプトが単純に終了します。

私はそれを送信しています:

これを行うとすぐに、Perl プロセスが死んでいるように見えます。これは、USR1 をキャプチャするように Log4perl を構成したかどうかに関係なく発生します。

USR2も使ってみましたが、同じ効果です。

Log4perl、Perl、Solaris のいずれかで、ここで明らかに欠けているものはありますか?

0 投票する
3 に答える
624 参照

perl - Self logging Perl modules (without Moose)

I have the same question as was asked HERE but unfortunately I cannot install Moose and I think the solution described there was particular to Moose. Can someone tell me how to the same in old school "use base" speak?

To reiterate the question, I would like to have my base classes to have an automatic logging mechanism using Log4perl so if the user does not do anything I get some reasonable logging but if the user of my class needs/wants to overwrite the logger they can.