0

我有一个类,我会将它包含在现有的 jar 中(通过使用 jar 更新命令 jar uf )

所以你现在可能知道这个类是不可修改的,所以我希望我的设置以可配置的方式。

我已经在 HashMap 中定义了所有生产服务器和开发服务器。(我可以使用 Set ,但选择 HashMap 来解决另一个问题,因为我将 ip 获取为 127.0.0.1 并希望使用主机名收集 IP)

这是我的 log4j.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
   <appender class="com.Log4JCustomAppender" name="CUSTAPPEN">
     <param value="includeDevMachiens" name="no" />
    <layout class="org.apache.log4j.PatternLayout">
         <param value="%m" name="ConversionPattern" />
      </layout>
      </appender>
   <root>
      <level value="INFO" />
      <appender-ref ref="CUSTAPPEN" />
   </root>
</log4j:configuration>

如您所见,includeDevMachiens如果参数名称为 no,则在从开发服务器运行时不想执行该消息,反之亦然

这是我将执行消息的代码。

private String includeDevMachienes ;

    public String getIncludeDevMachienes() {
        return includeDevMachienes;
    }

    public void setIncludeDevMachienes(String includeDevMachienes) {
        this.includeDevMachienes = includeDevMachienes;
    }

String  hostAddresss = Inet4Address.getLocalHost().getHostAddress();

String include  = getIncludeDevMachienes(); // yes or no 

how can i use yes or no value here ??

 //   right now the execute will be called for everything if the hostaddress value  is present in the map .

if(hostIPMap.containsValue(hostAddress))
{
execute(logMessage);
}
4

2 回答 2

0

代替 this <param value="includeDevMachiens" name="no" />,您可以使用 <param name="includeDevMachiens" name="True" Fetch this value as boolean include = Boolean.parseBoolean(getIncludeDevMachienes()); // yes or no 然后根据此标志执行操作。

于 2013-06-29T22:24:00.367 回答
0
if(hostIPMap.containsValue(hostAddress)) {
    //Check include is yes/no
    if("yes".equalsIgnoreCase(getIncludeDevMachines())){execute(logMessage);}

    //do rest of the stuffs related to host
}
于 2013-06-29T22:13:07.100 回答