1

在 NetBeans 平台应用程序中打包 log4j 配置文件显然需要深思熟虑。这是我试过的...

我将 log4j.xml 放在 some_netbeans_module 的 src/main/resources/my/package/log4j.xml 中。该包是一个公共模块包(即,该包中的类用于其他包中的类)。我重建了模块并确认文件确实被打包到模块中。

在我的课程中,我得到了一个记录器的实例,就像我一直做的那样:

static final Logger log = Logger.getLogger(ThisClass.class);

每个 NetBeans 平台应用程序都有一个 my_app.conf 文件,可以设置某些属性。这是我设置 log4j.conf 的地方:

log4j.configuration="/my/package/log4j.xml"

现在,当我运行应用程序时,我看到以下输出:

[INFO] /home/me/my_app/application/target/my_app/bin/../etc/my_app.conf: 5:
log4j.configuration=/my/package/log4j.xml: not found

上面的配置有什么问题?

4

1 回答 1

2

my_app.conf文件中,如果您将属性附加log4j.configurationdefault_options属性,如下所示:

default_options="...<other options> -J-Dlog4j.configuration=my/package/log4j.xml"

然后这个选项将被传递给 JVM。请注意,该log4j属性已-J-D附加到它上面。NetBeans使用-J来描述 JVM 属性,而-DJVM 使用 来描述系统属性

您也可以/应该删除引号和首字母/,因为引号不是必需的,如果您有首字母,NetBeans 会抱怨/

另一种方法,也是我喜欢的方法,因为它不需要编辑.conf文件,是将 log4j.xml 文件放入默认包中。如果您有其他要求阻止您执行此操作,请记住,log4j.configuration当您处于开发模式并在 IDE 内运行应用程序时,您必须将该属性放在应用程序的 platform.properties 文件中。像这样:

run.args.extra=-J-Dlog4j.configuration=my/package/log4j.xml

编辑:对于有关 NetBeans 平台的问题,您最好在NetBeans 平台用户论坛上发帖。

于 2011-11-11T09:07:25.817 回答