日志构件

一、常用日志构件

  • java.uitl.logging:JDK内置的日志接口和实现,功能比较简单
  • Log4j1Apache 的一个开放源代码项目,用户也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别
  • Log4j2:Log4j1的升级版本
  • Logback:是由log4j创始人设计的又一个开源日记组件
  • Commons-logging:为各种Logging API提供一个简单统一的接口,从而使用户能够在部署的时候配置自己希望的Logging API实现
  • Slf4j:为各种Logging API提供一个简单统一的接口,提供统一的接口,不提供具体实现,不是具体可使用可配置的日志系统

上面几个日志框架简单分为两类:

  • 日志门面 commons-logging,slf4j
  • 日志实现 jdk-logging,log4j,logback,log4j2

个人推荐使用log4j+slf4j

二、日志的基本知识

1、日志级别

Java的日志框架一般会提供以下日志级别,缺省打开info级别,也就是debug,trace级别的日志在生产环境不会输出,在开发和测试环境可以通过不同的日志配置文件打开debug级别。

 

  1. fatal - 严重的,造成服务中断的错误;
  2. error - 其他错误运行期错误;
  3. warn - 警告信息,如程序调用了一个即将作废的接口,接口的不当使用,运行状态不是期望的但仍可继续处理等;
  4. info - 有意义的事件信息,如程序启动,关闭事件,收到请求事件等;
  5. debug - 调试信息,可记录详细的业务处理到哪一步了,以及当前的变量状态;
  6. trace - 更详细的跟踪信息;

三、Log4j1

1、jar包

log4j-1.2.17.jar

2、配置

配置地址:默认为classpass下,即src目录下

Logger:分等级层次的,最顶层的是rootLogger,其他的logger都会继承他

Appende:输出目的地

  • org.apache.log4j.ConsoleAppender(控制台),
  • org.apache.log4j.FileAppender(文件),
  • org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
  • org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过org.apache.log4j.MaxBackupIndex=1设置为保存一个备份文件。
  • org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

layout:Appende输出格式

 

 打印格式

  • org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  • org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  • org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  • org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
  • %m 输出代码中指定的消息;
  • %M 输出打印该条日志的方法名;
  • %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;
  • %r 输出自应用启动到输出该log信息耗费的毫秒数;
  • %c 输出所属的类目,通常就是所在类的全名;
  • %t 输出产生该日志事件的线程名;
  • %n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;
  • %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;
  • %l 输出日志事件的发生位置,及在代码中的行数。

2.1 properties配置方式

  1. 配置根Logger:等级, appenderName , appenderName 
  2. 配置输出目的地Appender
  3. 配置日志信息的输出格式
log4j.rootLogger=INFO,Console,logFile

##Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

##logFile
log4j.appender.logFile=org.apache.log4j.RollingFileAppender
log4j.appender.logFile.File=D:\\coding\\log4j.txt
log4j.appender.logFile.MaxFileSize=1KB
log4j.appender.logFile.MaxBackupIndex=3
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

2.2 xml配置方式

  • appender、layout: 一个appender子元素定义一个日志输出目的地

  • logger、level:日志级别,定义以name开头类的级别

  • root:定义根日志输出器




 
	
	
		
		
			
		
	
	
	
	
		
	
	
	
	
		
		
	
	
		
	
	
	
		
	
 
	
		
	
 
	
		
	
 
	
		
	
	
		
	
	
	
		
		
	

3、日志打印使用方式

//初始化
private static Logger log = Logger.getLogger(testLog4j.class);  

//使用方式
log.info("========test daily level info=========");  

四、Log4j2

1、jar包

log4j-api-2.11.1.jar
log4j-core-2.11.1.jar

Maven:

dependency>
    org.apache.logging.log4j
    log4j-core
    2.11.0


    org.apache.logging.log4j
    log4j-api
    2.11.0

2、配置


 
 
 
 
     
     
     
         
         
             
         
     
     
        
     
     
         
                     
             
             
             
                 
                 
             
         
         
             
             
             
                 
                 
             
         
             
         
         
             
             
             
                 
                 
             
         
     
     
     
         
         
         
         
             
             
             
             
         
     
 

3、日志打印使用方式

//初始化
private static Logger log = Logger.getLogger(testLog4j.class);  

//使用方式
log.info("========test daily level info=========");  

五、logback

详见:https://blog.csdn.net/zzzgd_666/article/details/80458444

六、Slf4j

Slf4j只提供接口,实现可以采用其他实现框架,以log4j举例

1、jar包

主包:slf4j-api-1.7.12.jar

侨联包:slf4j-log4j12-1.7.12.jar

2、使用方式

技巧:用{}代替参数

// 导入slf4j类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// 添加slf4j日志实例对象
final static Logger logger = LoggerFactory.getLogger(Test.class);

// 输出日志
logger.info("测试:{}", "输出日志");

七、commons-logging

实现框架以log4j举例

1、jar包

common-logging.jar

无需侨联log4j的jar包

2、使用方式

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static Log logger = LogFactory.getLog(YouClassName.class);   
logger.trace("我是trace信息");
logger.debug("我是debug信息");
logger.info("我是info信息");
logger.warn("我是warn信息");
logger.error("我是error信息");

 

你可能感兴趣的:(Web框架及插件)