perl で ETL プロセスをセットアップして、多数のファイルを処理し、それらをデータベースにロードします。
最近、パフォーマンス上の理由から、fork() 呼び出しと system("perl someOtherPerlProcess.pl $arg1 $arg2") への呼び出しを使用して、コードをマルチスレッドに設定しました。
最終的に、someOtherPerlProcess.pl の約 12 のインスタンスが異なる引数で実行され、これらのプロセスはそれぞれ、1 ディレクトリ分のファイル (データベース内の 1 つのテーブルに対応) を処理します。
アプリケーションの主な機能は動作しますが、ログの構成方法を理解するのに問題があります。
理想的には、すべての someOtherPerlProcess.pl が同じ $log_config 値を共有してロガーを初期化したいのですが、それぞれが作業中のディレクトリにログ ファイルを作成するようにします。
私はそれを行う方法を理解することができませんでした。また、これらの perl スクリプトを呼び出しているディレクトリに、すべてのログ メッセージを含むいくつかのファイル (ARRAY(0x260eec)、ARRAY(0x313f8) など) があることにも気付きました!
実行中のコードから log4perl.appender.A1.filename 値を変更する簡単な方法はありますか? または、使用するファイル名を動的に構成しますが、構成ファイルの他のすべての値を使用しますか?