zoukankan      html  css  js  c++  java
  • log4j 初体验

    1.Log4j简介

         在应用程序中添加日志记录目的基于三个:
    • 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作
    • 跟踪代码运行时轨迹,作为日后审计的依据
    • 担当集成开发环境中的调式器的作用,向文件或控制台打印代码的调式信息
    最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或者文件中,比较好的做法就是构造一个日志操作类来封装此类操作。
     
    2.下载与使用
    2.1.下载log4j的jar文件导入eclipse
     
    2.2. 编写测试类和配置文件:src同级创建并设置log4j.properties
    ### 设置### log4j.rootLogger = debug,stdout,D,E 
    ### 输出信息到控制抬 ###
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    ### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = E:
    //logs/log.log
    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 ] - [ %p ] %m%n
    ### 输出ERROR 级别以上的日志到=E:
    //logs/error.log ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File =E:
    //logs/error.log
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
     
    2.3.设置日志内容  
    public class Test {
        private static Logger logger = Logger.getLogger(Test.class);  
        public static void main(String[] args) {  
            // System.out.println("This is println message.");  
            // 记录debug级别的信息  
            logger.debug("This is debug message.");  
            // 记录info级别的信息  
            logger.info("This is info message.");  
            // 记录error级别的信息  
            logger.error("This is error message.");  
        }  
    }
     
    2.4.输出结果
     
     
    log4j 格式详解
     
    log4j.rootLogger=日志级别,appender1, appender2, ….
    • 日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
    • 注意,需在控制台输入,只需将其中一个appender定义为stdout即可
    • 注意,rootLogger默认是对整个工程生效
    • 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
    • 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}
    log4j.appender.appender1=org.apache.log4j.日志输出到哪儿
    • ConsoleAppender(控制台)
    • FileAppender(文件)
    • DailyRollingFileAppender(每天产生一个日志文件)
    • RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
    • WriteAppender(将日志信息以流格式发送到任意指定的地方)
    • JDBCAppender(将日志信息保存到数据库中)
    log4j.appender.appender1.File=文件目录及文件
    ${user.home}/logs/...
    log4j.appender.appender1.MaxFileSize=最大文件大小
    log4j.appender.appender1.MaxBackupIndex=备份文件个数
    • 其中,appender1是在第一行定义过的;
    • 文件目录及文件,例如,/home/admin/logs/hutudan.log
    • 最大文件大小,例如,100KB
    • 备份文件个数,例如,1
    log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式
    • 例如,'.'yyyy-MM-dd
    log4j.appender.appender1.layout=org.apache.log4j.日志布局格式
    • HTMLLayout(以HTML表格形式布局)
    • SimpleLayout(包含日志信息的级别和信息字符串)
    • TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
    • PatternLayout(可以灵活的指定布局格式,常用)
    log4j.appender.appender1.layout.ConversionPattern=日志输出格式
    1. 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
    2. %c 输出日志信息所属的类的全名
    3. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
    4. %f 输出日志信息所属的类的类名
    5. %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
    6. %m 输出代码中指定的信息,如log(message)中的message
    7. %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
    8. %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    9. %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    10. %t 输出产生该日志事件的线程名
    11. 可参考:http://blog.sina.com.cn/s/blog_4e4dd5570100qowy.html
    log4j.appender.ServerDailyRollingFile.Append=true
    • 例如,不解释,追加往后写便是
    总结一下:
    • Logger类:完成日志记录,设置日志信息级别
    • Appender类:决定日志去向,终端、DB、硬盘
    • Layout类:决定日志输出的样式,例如包含当前线程、行号、时间
  • 相关阅读:
    jmeter-获取数据库中的数据
    jmeter常见报错汇总
    学习目录
    Spring+Spring Security+JSTL实现的表单登陆的例子
    Spring+Spring Security+Maven 实现的一个Hello World例子
    第六章:位置匹配
    第五章:重复匹配
    第四章:使用元字符
    第三章:匹配一组字符
    第二章:匹配单个字符
  • 原文地址:https://www.cnblogs.com/wysk/p/7611774.html
Copyright © 2011-2022 走看看