log4j :一个完整的例子 : Log4j日志 « 语言基础知识 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 语言基础知识 » Log4j日志屏幕截图 
log4j :一个完整的例子
log4j :一个完整的例子
  
/*
Logging In Java with the JDK 1.4 Logging API and Apache log4j
by Samudra Gupta    
Apress Copyright 2003 
ISBN:1590590996

*/

import org.apache.log4j.or.ObjectRenderer;
import org.apache.log4j.Logger;

import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;

class CustomerOrder {

  /** Holds value of property productName. */
  private String productName;

  /** Holds value of property productCode. */
  private int productCode;

  /** Holds value of property productPrice. */
  private int productPrice;

  /** Creates a new instance of CustomerOrder */
  public CustomerOrder() {
  }

  public CustomerOrder(String name, int code, int price) {
    this.productCode = code;
    this.productPrice = price;
    this.productName = name;
  }

  /**
   * Getter for property productName.
   
   @return Value of property productName.
   */
  public String getProductName() {
    return this.productName;
  }

  /**
   * Setter for property productName.
   
   @param productName
   *            New value of property productName.
   */
  public void setProductName(String productName) {
    this.productName = productName;
  }

  /**
   * Getter for property productCode.
   
   @return Value of property productCode.
   */
  public int getProductCode() {
    return this.productCode;
  }

  /**
   * Setter for property productCode.
   
   @param productCode
   *            New value of property productCode.
   */
  public void setProductCode(int productCode) {
    this.productCode = productCode;
  }

  /**
   * Getter for property productPrice.
   
   @return Value of property productPrice.
   */
  public int getProductPrice() {
    return this.productPrice;
  }

  /**
   * Setter for property productPrice.
   
   @param productPrice
   *            New value of property productPrice.
   */
  public void setProductPrice(int productPrice) {
    this.productPrice = productPrice;
  }
}

class ProductFilter extends Filter {
  /** Creates a new instance of ProductFilter */
  public ProductFilter() {
  }

  public int decide(LoggingEvent event) {
    int result = this.ACCEPT;
    //obtaining the message object passed through Logger
    Object message = event.getMessage();
    //checking if the message object is of correct type
    if (message instanceof CustomerOrder) {
      CustomerOrder order = (CustomerOrdermessage;
      int productCode = order.getProductCode();
      //checking for the product code greater than 100 only
      if (productCode < 100) {
        result = this.DENY;
      }
    else {
      //this filter can ignore this, pass to next filter
      result = this.NEUTRAL;
    }

    return result;
  }
}

class OrderRenderer implements ObjectRenderer {
  private static final String separator = "-";

  /** Creates a new instance of OrderRenderer */
  public OrderRenderer() {
  }

  public String doRender(Object obj) {
    StringBuffer buffer = new StringBuffer(50);
    CustomerOrder order = null;
    String productName = null;
    int productCode = 0;
    int productPrice = 0;
    //check if the instance is of correct type CustomerOrder
    if (obj instanceof CustomerOrder) {
      order = (CustomerOrderobj;
      productName = order.getProductName();
      productCode = order.getProductCode();
      productPrice = order.getProductPrice();

      buffer.append(productName);
      buffer.append(separator);
      buffer.append(new Integer(productCode).toString());
      buffer.append(separator);
      buffer.append(new Integer(productPrice).toString());
    }

    return buffer.toString();
  }
}

public class ProductFilterDemo {
  private static Logger logger = Logger.getLogger("name");

  /** Creates a new instance of ProductFilterDemo */
  public ProductFilterDemo() {
  }

  public void processOrder(CustomerOrder order) {
    logger.info(order);
  }

  public static void main(String args[]) {
    CustomerOrder order1 = new CustomerOrder("Beer"10120);
    CustomerOrder order2 = new CustomerOrder("Lemonade"9510);
    CustomerOrder order3 = new CustomerOrder("Chocolate"2235);

    ProductFilterDemo demo = new ProductFilterDemo();
    demo.processOrder(order1);
    demo.processOrder(order2);
    demo.processOrder(order3);
  }
}
//filter_properties.xml
/*
 
 * <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM
 * "log4j.dtd">
 
 * <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 
 * <renderer renderedClass="com.apress.business.CustomerOrder"
 * renderingClass="com.apress.logging.log4j.renderer.OrderRenderer"> </renderer>
 
 * <appender name="A1" class="org.apache.log4j.ConsoleAppender">
 
 * <layout class="org.apache.log4j.PatternLayout"> <param
 * name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/> </layout> <filter
 * class="com.apress.logging.log4j.filter.ProductFilter"/> </appender>
 
 * <logger name="com.apress.logging.log4j"> <level value="debug"/> <appender-ref
 * ref="A1"/> </logger> </log4j:configuration>
 */



           
         
    
  
Related examples in the same category
1. Example log4j Configuration File
2. log4j :简单日志log4j :简单日志
3. log4j :日志和servlet
4. log4j: File Based Logg Demolog4j: File Based Logg Demo
5. log4j: asynchronous log log4j: asynchronous log
6. log4j :布局演示log4j :布局演示
7. log4j :先进的日志log4j :先进的日志
8. set the level of the root logger to DEBUG and set its appender as an appender named testAppender
9. 定义一个名为记录
10. set the appender named testAppender to be a console appender
11. 为输出器 testAppender设置布局
12. define the root logger with two appenders writing to console and file
13. 定义您自己的记录名为com.foo
14. and assign level and appender to your own logger
15. 定义输出其命名的文件
16. 定义控制台名为输出器
17. log4j Configuration File: #set the level of the root logger to DEBUG and set its appender as an appender named X
18. log4j Configuration File: set the appender named X to be a console appender
19. log4j配置文件:为输出器X设置布局
20. log4j Configuration File: define the root logger with two appenders writing to console and file
21. log4j配置文件:定义自己的记录名为com.foo
22. log4j配置文件:指定输出器到您自己的日志
23. log4j配置文件:定义输出器名
24. log4j配置文件:定义输出器名为控制台
25. log4j.properties: set the level of the root logger to DEBUG (the lowest level) and set its appenders named DEBUG and CONSOLE
26. log4j.properties :设定您自己的日志
27. log4j.properties :设置输出器控制台
28. log4j.properties :设置输出器文件
29. log4j.properties :设置输出器滚动
30. log4j.properties :设置输出器日报
31. log4j.properties :设置布局的输出器
32. log4j.properties :文件布局
33. log4j.properties :滚动布局
34. log4j.properties :每日布局
35. log4j的配置文件:配置根记录器
36. log4j的配置文件:配置命名记录
37. log4j的配置文件:配置输出器控制台
38. log4j的配置文件:配置的布局TTCCLayout
39. html.properties :配置自定义日志
40. xml.properties :配置自定义日志
41. jdbc.properties configuration file for log4j
42. jms.properties JMS的配置文件
43. nt.properties for NT configuration
44. smtp.properties for EMail based logging
45. 通过配置文件和配置类
46. Logging Servlet with log4j
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.