Log4J和Java Web Start,如何在不同的配置之间交替?

时间:2010-07-23 08:06:47

标签: log4j java-web-start

我从Log4J开始,我希望在我们的Java Web Start分布式应用程序中有一个默认的log4j.properties,它只记录错误和重要事件。

但是如果某个客户端出现问题我希望有更详细的日志,那么这样做的方法是在此客户端中定义备用log4j配置文件。这可以通过使用log4j.configuration系统属性指定备用配置文件来完成。

但是......如何在java web start启动的应用程序中为此特定客户端定义系统属性? (我知道我可以在.jnlp文件中定义theese propeties,但这会影响所有客户端。)

我们的用户在Windows环境中工作,但他们通常拥有受限制的权限计算机,他们无法访问My Pc-> Properties - > Advanced Options - > Enviroment Variables(我在西班牙语配置的计算机中)我不知道英文中的确切名称。

2 个答案:

答案 0 :(得分:2)

您可以访问客户端磁盘上的已定义目录吗?

如果可以,您可以定义约定:如果在目录中找不到配置文件,则使用默认配置。否则,将加载特定的配置文件。

您可以使用Log4J的PropertyConfigurator class执行此操作:

File log4jConfigFile == new File(conventionLocation);
if(log4jConfigFile.isFile() && log4jConfigFile.exists()) {
    PropertyConfigurator.configure(conventionLocation);
} else {
    PropertyConfigurator.configure(defaultEmbeddedJarLocation);
}

答案 1 :(得分:0)

首先,如果您使用的是applet,您应该使用可以写入远程位置的appender,这样您就可以实际看到错误,而无需实际查看applet正在运行的本地计算机上。 Appender Types。接下来,您需要创建一个appender,其阈值为您记录正常“访问”类型消息的任何级别。将布局设置为您想要的任何内容。然后创建另一个appender,其级别至少为您记录“错误”的级别,以及适合您需要的自己的格式“更详细”。这样,当您的代码调用错误消息时,它将使用不同的布局。 Log4j相当复杂,但并非不可理解。查看The log4j site处的文档,了解一些简单的日志记录。之后,您应该能够修改代码以获得您想要的内容。