我在 perl 中设置了一个 ETL 进程来处理许多文件,并将它们加载到数据库中。
最近,出于性能原因,我通过使用 fork() 调用和对 system("perl someOtherPerlProcess.pl $arg1 $arg2") 的调用将代码设置为多线程。
我最终得到了大约 12 个使用不同参数运行的 someOtherPerlProcess.pl 实例,这些进程每个都通过一个包含文件的目录(对应于我们数据库中的一个表)工作。
应用程序的主要功能可以工作,但我在弄清楚如何配置我的日志记录时遇到了问题。
理想情况下,我希望所有 someOtherPerlProcess.pl 共享相同的 $log_config 值来初始化他们的记录器,但让每个人在他们正在处理的目录中创建一个日志文件。
我一直无法弄清楚如何做到这一点。我还注意到,在我调用这些 perl 脚本的目录中,我看到了几个包含我所有日志消息的文件(ARRAY(0x260eec)、ARRAY(0x313f8) 等)!
有没有一种简单的方法可以从运行代码中更改 log4perl.appender.A1.filename 值?或者以其他方式动态配置我们使用的文件名,但使用配置文件中的所有其他值?