如何在NetBeans平台应用程序中打包log4j配置文件



在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

上面的配置有什么问题?

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

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

则此选项将被传递给JVM。注意,log4j属性附加了-J-D-J被NetBeans用来描述JVM属性,-D被JVM用来描述系统属性。

你也可以/应该删除引号和初始/,因为引号是不必要的,NetBeans会抱怨,如果你有初始/

另一种方法是将log4j.xml文件放入默认包中,这是我喜欢的方法,因为它不需要编辑.conf文件。如果你有其他要求阻止你这样做,那么记住你必须把log4j.configuration属性放在应用程序的平台上。属性文件,当你在开发模式和IDE内运行应用程序。像这样:

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

编辑:关于NetBeans平台的问题,你可能有更好的运气发布到NetBeans平台用户论坛。

最新更新