zoukankan      html  css  js  c++  java
  • Log4j 简介及初步应用

    使用2.5版本有问题,暂时没有解决,也许是JDK版本不兼容的原因。因此使用的是log4j-1.2.8.jar

    1、三个组件

      日志记录器  ——  Logger、输出目的地 —— Appender、输出格式 —— Layout ;

      一个logger可以对应多个appender,一个appender只能对应一个layout,必须对应一个layout。

     入门级程序:

     1 import java.io.File;  
     2 import java.io.IOException;
     3 //import org.apache.logging.log4j.core.Logger;
     4 import org.apache.log4j.*;
     5 import javax.servlet.ServletConfig;  
     6 import javax.servlet.ServletContext;  
     7 import javax.servlet.ServletException;  
     8 import javax.servlet.http.HttpServlet;  
     9 import javax.servlet.http.HttpServletRequest;  
    10 import javax.servlet.http.HttpServletResponse;  
    11 /** 
    12  * Servlet implementation class Log4JInitServlet 
    13  */  
    14 public class Log4JInitServlet extends HttpServlet{
    15     private static Logger logger ;
    16     public Log4JInitServlet() {  
    17         super();  
    18         // TODO Auto-generated constructor stub  
    19     }  
    20     /** 
    21      * @see Servlet#init(ServletConfig) 
    22      */  
    23     public void init(ServletConfig config) throws ServletException {    
    24         super.init(config);
    25         try{
    26             System.out.println("当前路径默认=======" + System.getProperty("user.dir"));
    27             
    28             logger=Logger.getLogger(Log4JInitServlet.class); 
    29             PropertyConfigurator.configure("C:\myTestJava\Log4JWeb\WebRoot\ini\log4j.properties");
    30             logger.info("Info: this is info;");
    31             logger.debug("Debug: this is Debug;");
    32             logger.error("Error: this is Error;");
    33             System.out.println("------------------Init success");
    34         }catch(Exception e){
    35             System.out.println("Warning:there is an error:" + e.getMessage());
    36         }
    37     }
    38     /** 
    39      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    40      */  
    41     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    42         // TODO Auto-generated method stub  
    43     }  
    44 
    45     /** 
    46      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    47      */  
    48     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    49         // TODO Auto-generated method stub  
    50     }  
    51 }
    log4j_servlet
     1  ### 设置###
     2 log4j.rootLogger = debug,stdout,D,E
     3 
     4 ### 输出信息到控制抬 ###
     5 log4j.appender.stdout = org.apache.log4j.ConsoleAppender
     6 log4j.appender.stdout.Target = System.out
     7 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
     8 log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
     9 
    10 ### 输出DEBUG 级别以上的日志到=C://logs/log.log ###
    11 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    12 log4j.appender.D.File = C://logs/log.log
    13 log4j.appender.D.Append = true
    14 log4j.appender.D.Threshold = DEBUG 
    15 log4j.appender.D.layout = org.apache.log4j.PatternLayout
    16 log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [%t:%r]-[%c-%l]-[ %p ]  %m%n
    17 
    18 ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
    19 log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    20 log4j.appender.E.File =C://logs/error.log 
    21 log4j.appender.E.Append = true
    22 log4j.appender.E.Threshold = ERROR 
    23 log4j.appender.E.layout = org.apache.log4j.PatternLayout
    24 log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [%t:%r]-[%c-%l]-[ %p ]  %m%n
    配置文件

      配置文件的格式一般为:

      1、首先配置根Logger

      #配置根Logger  

      log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …  

      样例:log4j.rootLogger = debug,stdout,D,E

      2、配置输出的目的地 及 相关属性

      #配置日志信息输出目的地(Appender)  

      log4j.appender.appenderName  =  fully.qualified.name.of.appender.class   

      log4j.appender.appenderName.option1  =  value1   

      …   

      log4j.appender.appenderName.optionN  =  valueN 

      样例:-------

      3、配置输出格式

      #配置日志信息的格式(Layout)  

      log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class   

      log4j.appender.appenderName.layout.option1  =  value1   

      …   

      log4j.appender.appenderName.layout.optionN  =  valueN   

    自定义格式输出的参数格式含义:

        格式名   含义   

    1. %c         输出日志信息所属的类的全名   
    2. %d         输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28   
    3. %f          输出日志信息所属的类的类名   
    4. %l          输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行  (Log4JInitServlet.init(Log4JInitServlet.java:31))类名.函数名
    5. %m        输出代码中指定的信息,如log(message)中的message   
    6. %n         输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”   
    7. %p         输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推   
    8. %r          输出自应用启动到输出该日志信息所耗费的毫秒数   
    9. %t          输出产生该日志事件的线程名 

    appender的种类:

    org.apache.log4j.ConsoleAppender(控制台),  
    org.apache.log4j.FileAppender(文件),  
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),  
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

    配置 文件大小达到指定大小的时候,产生一个新文件:
    ### 输出DEBUG 级别以上的日志到=C://logs/log.log 指定文件大小###
    log4j.appender.D = org.apache.log4j.RollingFileAppender
    log4j.appender.D.File = C://logs/log.log
    log4j.appender.D.MaxFileSize = 2KB
    log4j.appender.D.MaxBackupIndex=100
    log4j.appender.D.Append = true
    log4j.appender.D.Threshold = DEBUG 
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [%t:%r]-[%c-%l]-[ %p ]  %m%n
    达到指定文件大小 生成新文件

     配置输出到MySQL数据库:

    ##将日志信息写入数据库###
    log4j.appender.DB = org.apache.log4j.jdbc.JDBCAppender
    ##设置缓存大小,就是当有2条日志信息是才忘数据库插一次 如果只有1条,插不进去数据库的;
    log4j.appender.DB.BufferSize=2
    ##设置要将日志插入到数据库的驱动
    log4j.appender.DB.driver=com.mysql.jdbc.Driver
    ##URL 用户名 密码
    log4j.appender.DB.URL=jdbc:mysql://192.168.61.28:3306/encysys48
    log4j.appender.DB.user=encysys48
    log4j.appender.DB.password=encysys48
    log4j.appender.DB.Threshold = DEBUG 
    log4j.appender.DB.layout = org.apache.log4j.PatternLayout
    ###指定SQL语句在每次记录事件发生的时间执行。这可能是INSERT,UPDATE或DELETE
    log4j.appender.DB.sql=insert into jp_fullnote1 (HF_SERIALID,HF_ORDERID,AGENT_ID,CHARGE_PHONE,CHARGE_SERIALID,PHONE_RESMONEY,CARD_PWD) values ('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
    将日志信息 写入数据库的配置
  • 相关阅读:
    C# 中使用反射的优缺点
    winfrom---Window 消息大全
    Entity Framework:三种开发模式实现数据访问
    asp.net Core 2.0 MVC为Controller或Action添加定制特性实现登录验证
    [十二省联考2019] 异或粽子 解题报告 (可持久化Trie+堆)
    [jzoj 3175] 数树数 解题报告 (树链剖分)
    [jzoj 5661] 药香沁鼻 解题报告 (DP+dfs序)
    [jzoj 5662] 尺树寸泓 解题报告 (线段树+中序遍历)
    [jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)
    范德蒙恒等式学习笔记
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/5159947.html
Copyright © 2011-2022 走看看