【问题标题】:How do I package a log4j configuration file in a NetBeans Platorm application?如何在 NetBeans 平台应用程序中打包 log4j 配置文件?
【发布时间】:2011-11-11 07:49:37
【问题描述】:

在 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

上面的配置有什么问题?

【问题讨论】:

    标签: configuration log4j netbeans-platform


    【解决方案1】:

    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 用于delineate a system property

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

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

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

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

    【讨论】:

    • 我会在今天晚些时候试一试,看看它对我有什么好处。不过,我并不太乐观:我找到了 my_app.conf 文件的示例,它们完全像我一样设置了 log4j.configuration 参数。如果可行的话,我发现该方法比将其作为 JVM 属性添加到 default_options 中更简洁。我非常感谢这个建议!
    • 当然可以。让我们知道结果如何
    • 我稍微修改了一下,发现 /my/package 的工作方式与 my/package 相同(没有起始斜杠),并且 conf 中的变量。文件不是系统属性,而是真正的环境变量,这就是它以前不起作用的原因。谢谢。 ;)
    • 不客气。还要注意编辑。老实说,您在论坛中遇到这些类型的问题会更好。
    猜你喜欢
    • 1970-01-01
    • 2013-11-28
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多