`
endual
  • 浏览: 3566031 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

log4j的用法

 
阅读更多



import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.SystemConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.log4j.Logger;

public class ClientConfig
{
  private static final String UDDI_CONFIG_FILENAME_PROPERTY = "uddi.client.xml";
  public static final String DEFAULT_UDDI_CONFIG = "META-INF/uddi.xml";
  private Logger log = Logger.getLogger(ClientConfig.class);
  private Configuration config = null;
  private Map<String, UDDINode> uddiNodes = null;
  private Map<String, UDDIClerk> uddiClerks = null;
  private Set<XRegistration> xBusinessRegistrations = null;
  private Set<XRegistration> xServiceBindingRegistrations = null;
  private String managerName = null;

  public ClientConfig(String configurationFile)
    throws ConfigurationException
  {
    loadConfiguration(configurationFile);
  }
  protected void loadManager() throws ConfigurationException {
    this.uddiNodes = readNodeConfig(this.config);
    this.uddiClerks = readClerkConfig(this.config, this.uddiNodes);
    this.xServiceBindingRegistrations = readXServiceBindingRegConfig(this.config, this.uddiClerks);
    this.xBusinessRegistrations = readXBusinessRegConfig(this.config, this.uddiClerks);
  }

  private void loadConfiguration(String configurationFile)
    throws ConfigurationException
  {
    CompositeConfiguration compositeConfig = new CompositeConfiguration();
    compositeConfig.addConfiguration(new SystemConfiguration());

    XMLConfiguration xmlConfig = null;
    if (configurationFile != null) {
      xmlConfig = new XMLConfiguration(configurationFile);
    } else {
      String filename = System.getProperty("uddi.client.xml");
      if (filename != null)
        xmlConfig = new XMLConfiguration(filename);
      else {
        xmlConfig = new XMLConfiguration("META-INF/uddi.xml");
      }
    }
    this.log.info("Reading UDDI Client properties file " + xmlConfig.getBasePath());
    long refreshDelay = xmlConfig.getLong("reloadDelay", 1000L);
    this.log.debug("Setting refreshDelay to " + refreshDelay);
    FileChangedReloadingStrategy fileChangedReloadingStrategy = new FileChangedReloadingStrategy();
    fileChangedReloadingStrategy.setRefreshDelay(refreshDelay);
    xmlConfig.setReloadingStrategy(fileChangedReloadingStrategy);
    compositeConfig.addConfiguration(xmlConfig);

    this.config = compositeConfig;
    loadManager();
  }

  private Map<String, UDDIClerk> readClerkConfig(Configuration config, Map<String, UDDINode> uddiNodes) throws ConfigurationException
  {
    this.managerName = config.getString("manager[@name]");
    Map clerks = new HashMap();
    if (config.containsKey("manager.clerks.clerk[@name]")) {
      String[] names = config.getStringArray("manager.clerks.clerk[@name]");

      this.log.debug("clerk names=" + names);
      for (int i = 0; i < names.length; i++) {
        UDDIClerk uddiClerk = new UDDIClerk();
        uddiClerk.setManagerName(this.managerName);
        uddiClerk.setName(config.getString("manager.clerks.clerk(" + i + ")[@name]"));
        String nodeRef = config.getString("manager.clerks.clerk(" + i + ")[@node]");
        if (!uddiNodes.containsKey(nodeRef)) throw new ConfigurationException("Could not find Node with name=" + nodeRef);
        UDDINode uddiNode = (UDDINode)uddiNodes.get(nodeRef);
        uddiClerk.setUDDINode(uddiNode);
        uddiClerk.setPublisher(config.getString("manager.clerks.clerk(" + i + ")[@publisher]"));
        uddiClerk.setPassword(config.getString("manager.clerks.clerk(" + i + ")[@password]"));
        String[] classes = config.getStringArray("manager.clerks.clerk(" + i + ").class");
        uddiClerk.setClassWithAnnotations(classes);
        clerks.put(names[i], uddiClerk);
      }
    }
    return clerks;
  }

  public boolean isRegisterOnStartup() {
    boolean isRegisterOnStartup = false;
    if (this.config.containsKey("manager.clerks[@registerOnStartup]")) {
      isRegisterOnStartup = this.config.getBoolean("manager.clerks[@registerOnStartup]");
    }
    return isRegisterOnStartup;
  }

  private Map<String, UDDINode> readNodeConfig(Configuration config) throws ConfigurationException
  {
    String[] names = config.getStringArray("manager.nodes.node.name");
    Map nodes = new HashMap();
    this.log.debug("node names=" + names);
    for (int i = 0; i < names.length; i++) {
      UDDINode uddiNode = new UDDINode();
      String nodeName = config.getString("manager.nodes.node(" + i + ").name");
      String[] propertyKeys = config.getStringArray("manager.nodes.node(" + i + ").properties.property[@name]");
      Properties properties = null;
      if ((propertyKeys != null) && (propertyKeys.length > 0)) {
        properties = new Properties();
        for (int p = 0; p < propertyKeys.length; p++) {
          String name = config.getString("manager.nodes.node(" + i + ").properties.property(" + p + ")[@name]");
          String value = config.getString("manager.nodes.node(" + i + ").properties.property(" + p + ")[@value]");
          this.log.debug("Property: name=" + name + " value=" + value);
          properties.put(name, value);
        }
        uddiNode.setProperties(properties);
      }
      uddiNode.setHomeJUDDI(config.getBoolean("manager.nodes.node(" + i + ")[@isHomeJUDDI]", false));
      uddiNode.setName(config.getString("manager.nodes.node(" + i + ").name"));
      uddiNode.setManagerName(config.getString("manager[@name]"));
      uddiNode.setDescription(config.getString("manager.nodes.node(" + i + ").description"));
      uddiNode.setProxyTransport(config.getString("manager.nodes.node(" + i + ").proxyTransport"));
      uddiNode.setInquiryUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").inquiryUrl"), properties));
      uddiNode.setPublishUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").publishUrl"), properties));
      uddiNode.setCustodyTransferUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").custodyTransferUrl"), properties));
      uddiNode.setSecurityUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").securityUrl"), properties));
      uddiNode.setSubscriptionUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").subscriptionUrl"), properties));
      uddiNode.setSubscriptionListenerUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").subscriptionListenerUrl"), properties));
      uddiNode.setJuddiApiUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").juddiApiUrl"), properties));
      uddiNode.setFactoryInitial(config.getString("manager.nodes.node(" + i + ").javaNamingFactoryInitial"));
      uddiNode.setFactoryURLPkgs(config.getString("manager.nodes.node(" + i + ").javaNamingFactoryUrlPkgs"));
      uddiNode.setFactoryNamingProvider(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").javaNamingProviderUrl"), properties));
      nodes.put(nodeName, uddiNode);
    }
    return nodes;
  }

  private Set<XRegistration> readXBusinessRegConfig(Configuration config, Map<String, UDDIClerk> clerks) throws ConfigurationException
  {
    return readXRegConfig(config, clerks, "business");
  }

  private Set<XRegistration> readXServiceBindingRegConfig(Configuration config, Map<String, UDDIClerk> clerks) throws ConfigurationException
  {
    return readXRegConfig(config, clerks, "servicebinding");
  }

  private Set<XRegistration> readXRegConfig(Configuration config, Map<String, UDDIClerk> clerks, String entityType) throws ConfigurationException
  {
    String[] entityKeys = config.getStringArray("manager.clerks.xregister." + entityType + "[@entityKey]");
    Set xRegistrations = new HashSet();
    this.log.info("XRegistration " + entityKeys.length + " " + entityType + "Keys");
    for (int i = 0; i < entityKeys.length; i++) {
      XRegistration xRegistration = new XRegistration();
      xRegistration.setEntityKey(config.getString("manager.clerks.xregister." + entityType + "(" + i + ")[@entityKey]"));

      String fromClerkRef = config.getString("manager.clerks.xregister." + entityType + "(" + i + ")[@fromClerk]");
      if (!clerks.containsKey(fromClerkRef)) throw new ConfigurationException("Could not find fromClerk with name=" + fromClerkRef);
      UDDIClerk fromClerk = (UDDIClerk)clerks.get(fromClerkRef);
      xRegistration.setFromClerk(fromClerk);

      String toClerkRef = config.getString("manager.clerks.xregister." + entityType + "(" + i + ")[@toClerk]");
      if (!clerks.containsKey(toClerkRef)) throw new ConfigurationException("Could not find toClerk with name=" + toClerkRef);
      UDDIClerk toClerk = (UDDIClerk)clerks.get(toClerkRef);
      xRegistration.setToClerk(toClerk);
      this.log.info(xRegistration);

      xRegistrations.add(xRegistration);
    }
    return xRegistrations;
  }

  protected Map<String, UDDINode> getUDDINodes() {
    return this.uddiNodes;
  }

  public UDDINode getHomeNode() throws ConfigurationException {
    if (this.uddiNodes == null) throw new ConfigurationException("The juddi client configuration must contain at least one node element.");

    if (this.uddiNodes.values().size() == 1) return (UDDINode)this.uddiNodes.values().iterator().next();
    for (UDDINode uddiNode : this.uddiNodes.values()) {
      if (uddiNode.isHomeJUDDI()) {
        return uddiNode;
      }
    }
    throw new ConfigurationException("One of the node elements in the client configuration needs to a 'isHomeJUDDI=\"true\"' attribute.");
  }

  public UDDINode getUDDINode(String nodeName) throws ConfigurationException {
    if (!this.uddiNodes.containsKey(nodeName)) {
      throw new ConfigurationException("Node '" + nodeName + "' cannot be found in the config '" + getManagerName() + "'");
    }

    return (UDDINode)this.uddiNodes.get(nodeName);
  }

  public Map<String, UDDIClerk> getUDDIClerks() {
    return this.uddiClerks;
  }

  public Set<XRegistration> getXServiceBindingRegistrations() {
    return this.xServiceBindingRegistrations;
  }

  public Set<XRegistration> getXBusinessRegistrations() {
    return this.xBusinessRegistrations;
  }

  public Configuration getConfiguration() {
    return this.config;
  }

  public String getManagerName() {
    return this.managerName;
  }
}

分享到:
评论

相关推荐

    log4j.rar log4j使用方法

    标题“log4j.rar log4j使用方法”暗示了我们要讨论的是一个关于log4j日志框架的压缩包文件,其中包含了如何使用log4j的指导资料。log4j是Java编程语言中广泛使用的开源日志记录工具,它允许开发者灵活地控制日志信息...

    log4j使用方法

    log4j使用方法 1、Log4j是什么? 2、Log4j的概念 3、Log4j的配置文件 4、Log4j在程序中的使用

    老生常谈Log4j和Log4j2的区别(推荐)

    而Log4j2需要import org.apache.logging.log4j.Level、org.apache.logging.log4j.LogManager和org.apache.logging.log4j.Logger,使用LogManager.getLogger()方法获取日志记录器。 Log4j和Log4j2都是常用的日志记录...

    LOG4J使用方法

    ### LOG4J使用方法详解 #### 一、Log4j简介 Log4j是一个开源的日志框架,由Apache Software Foundation开发。它允许开发者根据等级记录日志信息,并且能够自由控制日志信息输出的目的地与格式。这使得Log4j在处理...

    Log4j2简介及与Log4j效率对比

    9. **Layouts的广泛适用性**:Log4j2的Layouts不仅可以应用于使用`OutputStream`写入日志的Appender,还可以应用于所有类型的Appender。 10. **优化的并发支持**:Log4j2利用Java 5提供的并发特性,能够在较低级别...

    log4j使用详细方法

    **日志框架Log4j详解** Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java开发中。...通过阅读提供的"log4j使用方法"文档,你将能更深入地了解Log4j的配置和使用技巧,为你的开发工作带来便利。

    log4j使用教程(详解)

    本文将深入探讨Log4j的基本概念、配置与使用方法。 1. **什么是Log4j** Log4j是一个基于Java的日志记录工具,它提供了灵活的控制来记录日志信息,包括日志级别(DEBUG、INFO、WARN、ERROR、FATAL)、日志输出格式...

    log4j使用方法及简单配置

    这篇文档将详细介绍Log4j的使用方法和配置,帮助你掌握如何有效地管理和控制日志输出。 首先,了解日志的重要性是至关重要的。日志可以帮助开发者追踪程序运行状态,定位错误,以及进行性能分析。相比于直接使用`...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    Log4J用法,log4j操作手册

    ### Log4J用法详解与操作手册概览 #### Log4J框架概述 Log4J是一种功能强大且灵活的Java日志记录框架,由Apache软件基金会的Jakarta项目开发并维护,采用Apache Software License许可发布。该框架的核心设计原则...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    3. **使用SLF4J接口**:在Java代码中,通过SLF4J的LoggerFactory获取Logger对象,然后调用相应的日志方法。例如: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestClass ...

    log4j简单使用

    - `log4j-1.2.14.jar`: 这是Log4j 1.2.14版本的jar包,包含了Log4j的全部类和方法,是使用Log4j进行日志记录的核心组件。 - `commons-logging-1.0.4.jar`: 这是Apache Commons Logging库,它是Java日志API的一个抽象...

    log4j-API-最新稳定版本log4j-1.2.17

    **标题与描述解析** 标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架...对于使用Log4j的开发者来说,理解和掌握API的各个方面至关重要,以实现有效的日志管理并优化应用程序的监控。

    log4j使用方法详细介绍

    ### Log4j 使用方法详解 #### 一、Log4j简介 Log4j是一个非常强大的日志记录工具,被广泛应用于Java开发中的日志管理。它具有灵活性强、配置简单等特点,能够帮助开发者轻松地记录应用程序运行过程中的各种信息。 ...

    log4j-2.17.1的jar包,导入即可使用

    Log4j是Java编程语言中广泛使用的日志记录框架,特别是在企业级应用和大型系统中。这个"**log4j-2.17.1**"的版本是该框架的一个更新,提供了修复的安全漏洞和性能优化。以下是关于Log4j 2.17.1的一些关键知识点: 1...

    log4j示例项目

    这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...

    log4j配置和加载方法

    ### Log4j配置与加载方法详解 Log4j是一款由Apache出品的日志记录工具,它提供了灵活的日志级别控制和多样化的日志输出方式,广泛应用于Java应用的开发中。本文将深入解析log4j的配置与加载机制,帮助开发者更好地...

    log4j-1.2.15.jar

    本文将详细解析Log4j 1.2.15.jar这个版本的核心概念、使用方法以及重要特性。 一、Log4j简介 Log4j是由Apache软件基金会开发的一个开源日志组件,主要为Java应用程序提供日志服务。它的设计理念是让日志输出变得...

    log4j-to-slf4j-2.17.1-API文档-中文版.zip

    赠送jar包:log4j-to-slf4j-2.17.1.jar; 赠送原API文档:log4j-to-slf4j-2.17.1-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.17.1.pom; 包含翻译后...

    tomcat下的log4j日志配置

    在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发效率和系统的可维护性。本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,...

Global site tag (gtag.js) - Google Analytics