如何从脚本环境中配置log4jV1

问题描述

  • 我有一个在JBoss环境中运行的商业产品。产品已经使用Log4J 1.2。*(属性文件)进行了配置。由于支持原因,我不会更改log4j定义。

  • 在产品中,我可以添加一些带有自己代码的Java源代码片段。 Java代码必须实现三种方法:“ init”,“ destroy”和“ process”。产品启动(一次)时调用“ init”,停止(一次)时调用“ destroy”。当脚本有任务时,产品将调用“进程”。

  • 当我更改代码时,这些代码由产品即时编译和执行。再次调用“ destroy”和“ init”。

  • 在代码中,我以编程方式在“ init”期间添加了一个附加程序(例如:RollingFileAppender),并在“ destroy”期间删除了该附加程序。因此,当产品调用“进程”时,我所有的日志记录都将写入到我自己的日志文件中,该文件在RollingFileAppender中配置。

  • Java代码未在隔离的环境中运行,我可以从商业产品中看到记录器和附加器,因此在添加和删除附加器时必须格外小心。

  • 我可以有多个Java源代码脚本,因此每个脚本都在创建自己的日志文件。我避免使用“ java脚本”,不要混淆。这是一个Java代码片段。

  • 我可以在Java源代码片段中添加一些JAR库,因此我的Java代码可以使用这些库,调用过程以及创建对象,调用对象的方法。

  • 我的问题

    • JAR库以通常的方式处理log4j。这样就创建了一个记录器:

      private static final Logger logger = Logger.getLogger(MyClass.class);

    • 如果我的Java代码正在从库(JAR)创建某些对象

      MyClass myClass = new MyClass();

    • 该对象myClass的所有日志记录都不会转到在“ init”期间创建的附加程序。

    • 我也想要:

      Java代码“ A”将添加到附加程序A.log,并随后从库中创建的对象进行日志记录。

      Java代码“ B”将添加到附加程序B.log,并随后从库中创建的对象进行日志记录。

    • 我可以(也许)对类和库的包名称产生一些影响。

  • 我正在挖掘,所以我发现,从库创建的所有对象都不知道我自己的追加程序,因此它们未附加到我的追加程序,此刻所有记录都无处进行,因为商业产品将错误级别设置为错误,并且不知道我的包裹命名。

还有提示吗?

Uwe

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)