3-02 Java日志

目录

一.使用JDK Logging 

二.使用Commons Logging

三.使用Log4j


一.使用JDK Logging 


1.日志Logging

  • 日志是为了替代System.out.println(),可以定义格式,重定向到文件等
  • 日志可以存档,便于追踪问题
  • 日志记录可以按级别分类,便于打开或关闭某些级别
  • 可以根据配置文件调整日志,无需修改代码

JDK提供了Logging:java.util.logging
JDK Logging定义了7个日志级别:
     SEVERE
     WARNING
     INFO(默认级别)
    CONFIG
    FINE
    FINER
    FINEST
JDK Logging的局限:

  • JVM启动时读取配置文件并完成初始化
  • JVM启动后无法修改配置
  • 需要在JVM启动时传递参数-Djava.util.logging.config.file=config-file-name

二.使用Commons Logging


1.Commons Logging

  • Commons Logging是Apache创建的日志系统:
  • Commons Logging是使用最广泛的日志模块
  • Commons Logging的API非常简单
  • Commons Logging可以自动使用其他日志模块

2.Commons Logging定义了6个日志级别:
    FATAL
    ERROR
    WARNING
    INFO(默认级别)
    DEBUG
    TRACE
在Eclipse中引入jar包:
    Project -> Property -> Java Build Path -> Libraries -> Add Jars...
初始化Log对象:
    final Log log = LogFactory.getLog(getClass());
文档:http://commons.apache.org/proper/commons-logging/


三.使用Log4j

官网:http://logging.apache.org/log4j/
1.Log4j的概念:
    Appender:日志输出目的地
    Layout:日志输出格式
2. 在Commons Logging 中使用Log4j:

  • 通过Commons Logging实现日志,不需要修改代码即可使用Log4j
  • 使用Log4j只需要把log4j2.xml和相关jar放入classpath
  • 如果要更换Log4j,只需要移除log4j2.xml和相关jar
  • 只有扩展Log4j时,才需要引用Log4j的接口

3.Log4j 配置解释


日志信息的优先级从高到低有OFF ERROR、WARN、 INFO、DEBUG,ALL若果设置成INFO则不会输出debug的信息



 #总体设置日志

log4j.rootLogger=DEBUG,logfile  #所有日志以DEBUG级别logfile(日志文件)方式输出

log4j.logger.com.userPackage=DEBUG,stdout,Logfile   #com.userPackage包下所有日志以DEBUG级别stdout(控制台)方式和proLogfile(日志文件)方式输出



其中,Log4j提供的appender(即日志输出的目的地)有以下几种:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 


其中,Log4j提供的layout(即日志输出的格式)有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

配置日志信息的格式(布局),其语法为:

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

log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.optionN = valueN

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

所以:
%5p [%t] (%F:%L) - %m%n 就表示
宽度是5的优先等级 线程名称 (文件名:行号) - 信息 回车换行,例如:



以下是对输出到控制台中的设置

log4j.appender.stdout=org.apache.log4j.ConsoleAppender             #输出到控制台(stdout即控制台)

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout        #按照制定格式输出信息

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n   #输出格式



以下是对输出到单个文件中的设置

log4j.appender.LogfileName=org.apache.log4j.FileAppender                 #日志输出到单文件(LogfileName)

log4j.appender.LogfileName.File=logs/programmer.log                      #输出目的-文件地址

log4j.appender.LogfileName.layout=org.apache.log4j.PatternLayout         #按照制定格式输出信息

log4j.appender.simpleLogfile.layout.ConversionPattern=%d %p [%c] - %m%n  #输出格式


#日志输出到多个文件(logfile)

log4j.appender.LogfileName=org.apache.log4j.RollingFileAppender             #输出方式-多个文件,文件大小到达指定尺寸的时候产生一个新的文件

log4j.appender.LogfileName.maxBackupIndex=8      			    #最大文件数

log4j.appender.LogfileName.maxFileSize=2097152   			    #每个文件最大长度(1024为1K,所以1024*1024*2=2097152为2M)

log4j.appender.LogfileName.File=logs/sysyem.log  			    #输出目的-文件地址

log4j.appender.LogfileName.layout=org.apache.log4j.PatternLayout            #按照制定格式输出输出格式

log4j.appender.LogfileName.layout.ConversionPattern=%d %p [%c] - %m%n       #设置日志的输出格式


#日志输出到日志文件,每天生成一个日志文件

log4j.appender.LogfileName = org.apache.log4j.DailyRollingFileAppender  #输出方式-输出到日志文件-每天产生一个日志文件

log4j.appender.LogfileName.File = ${webapp.root}/WEB-INF/etc/log	#输出日志的文件位置

log4j.appender.LogfileName.DatePattern='_'yyyy-MM-dd'.log'		#每天产生一个新的日志文件,以日期为日志文件名

log4j.appender.LogfileName.Append = true				#将日志信息添加到日志文件中,如果是false 则是覆盖到日志文件中

log4j.appender.LogfileName.Threshold = ERROR				#指定日志信息输出的最低层次

log4j.appender.LogfileName.layout = org.apache.log4j.PatternLayout	#按照制定格式输出输出格式

log4j.appender.LogfileName.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n	#设置日志输出格式


4.Log4j 常用配置文件

log4j.rootLogger=debug, stdout,LogfileName
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
 
#输出方式-输出到日志文件-每天产生一个日志文件
log4j.appender.LogfileName = org.apache.log4j.DailyRollingFileAppender
#输出日志的文件位置
log4j.appender.LogfileName.File = /Users/zhouzhenlin/Music/log
#每天产生一个新的日志文件,以日期为日志文件名
log4j.appender.LogfileName.DatePattern='_'yyyy-MM-dd'.log'
#将日志信息添加到日志文件中,如果是false 则是覆盖到日志文件中
log4j.appender.LogfileName.Append = true
#指定日志信息输出的最低层次
log4j.appender.LogfileName.Threshold = ERROR
#按照制定格式输出输出格式
log4j.appender.LogfileName.layout = org.apache.log4j.PatternLayout
#设置日志输出格式
log4j.appender.LogfileName.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
 
public class Main {
    static Logger logger=Logger.getLogger(Main.class);
 
    public static void main(String[] args){
 
        logger.trace("所有信息");
        logger.debug("调试信息");
        logger.info("输出信息");
        logger.warn("警告信息");
        logger.error("错误信息");
    }
}
 
 
 
 

参考:https://blog.csdn.net/lduzhenlin/article/details/89147904

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值