在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平台用户论坛。