记一笔:logback自定义标签-ip和port


logback提供自定义属性接口:

PropertyDefiner:getPropertyValue()


 
 记一笔:GetIpCustomProperty

     public String getPropertyValue() {

        try {

                InetAddress address = InetAddress.getLocalHost();

                return address.getHostAddress();

          } catch (UnknownHostException e) {

              e.printStackTrace();

          }   

               return null;

      }


    GetPortCustomProperty==静态无请求获取服务端口号  

public String getTomcatPortValue() {
        try {
            List<MBeanServer> serverList = MBeanServerFactory
                    .findMBeanServer(null);
            for (MBeanServer server : serverList) {
                Set<ObjectName> names = new HashSet<ObjectName>();
                names.addAll(server.queryNames(new ObjectName(
                        "Catalina:type=Connector,*"), null));
                Iterator<ObjectName> it = names.iterator();
                while (it.hasNext()) {
                    ObjectName oname = (ObjectName) it.next();
                    String pvalue = (String) server.getAttribute(oname,
                        "protocol");
                    if (StringUtils.equals("HTTP/1.1", pvalue)) {
                        return ObjectUtils.toString(server.getAttribute(oname,
                            "port"));
                    }
                }
            }
        } catch (Exception e) {
            LOGGER.error("获取port失败,影响logback的文件拼接", e);
        }
        return StringUtils.EMPTY;
    }


GetHomeCustomProperty
    

public String getPropertyValue() {
      String jettyPath = System.getProperty("jetty.home");
      String catalinaPath = System.getProperty( "catalina.home");
      String path = StringUtils.defaultString(jettyPath, catalinaPath);
      if(StringUtils.isBlank(path)) {
          return defaultPath;
      }
        File file = new File(path);
        if(file.exists()){
            File parentFile = file.getParentFile();
            return (parentFile != null? parentFile.getPath(): file.getPath()) +File.separator+ defaultPath;
        }
        return defaultPath;
    }




然后在logback.xml配置文件中,定义自定义标签define name代表标签,class指向处理的类。在初始化时调用getPropertyValue()


 
 


猜你喜欢

转载自itwork4liu.iteye.com/blog/2292046
今日推荐