logback与Spring、SpringMVC结合使用教程

        林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

        摘要:本文主要介绍了如何在spring、springMVC中使用logback

一、logback与Spirng结合使用

1、maven添加引用:

 

		
			log4j
			log4j
			${log4j.version}
		
		
			org.slf4j
			slf4j-api
			${slf4j.version}
		
		
			ch.qos.logback
			logback-classic
			1.1.2
		
		
			ch.qos.logback
			logback-core
			1.1.2
		
		
			org.logback-extensions
			logback-ext-spring
			0.1.1
		


其中logback-ext-spring这个jar包是为了和spring一起使用的。

 

2、src/main/resource添加logback.xml

 



	
	 
	 
	 
	  
	 

	
	
		
			%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n
		
	

  
	
		${log.base}/${log.moduleName}.log
		
		
			${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip
			
			
			
				${log.max.size}
			
		
		
		
			%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n
		
	
 
	
	
		
		
		
	
	
	
		 
		
	

 

其中,下面这几个参数 是在pom.xml里配置的,如果你不想在pom.xml里来配置,也可以直接写死就是

 
 
 
 

参数内容如下:

 


		
		
			dev
			
				true
			
			
			
				
				com.mysql.jdbc.Driver
				jdbc:mysql://localhost:3306/learning
				root
				christmas258@

				ssm-project
				logs
				DEBUG
				DEBUG
				]]>
			
		
	

 

 

3、如果单独的跑一个spring项目,不带web页面的话,那么这时跑个单元测试就可以打印日志了

 

logback与Spring、SpringMVC结合使用教程_第1张图片

看看输出的文件:

logback与Spring、SpringMVC结合使用教程_第2张图片

二、logback与spingMVC结合使用

其实与spingMVC只需要在上面的工程中,在web.xml里添加如下内容即可。

    
	
		logbackConfigLocation
		classpath:logback.xml
	
	
		ch.qos.logback.ext.spring.web.LogbackConfigListener
	

然后本地启动tomcat,把项目加载进来,注意,此时的日志输出路径 不会像上面一样出现在工程所在路径的logs目录下,而会放在eclipse安装目录下,自动新建一个logs目录 下:

logback与Spring、SpringMVC结合使用教程_第3张图片

而如果将此war包上传到linux下的tomcat的webapp目录后,日志文件会保存在tomcat/bin/logs目录下,记得,这个是web项目和非web项目日志保存路径的不同!

 

下面这一个是配置比较复杂的,大的工程更多的是以这种方式来配置的,针对不同的包,不同级别的日志来分别打印,如下:



	
	 
	 
	 
	  
	 

	
	
		
			%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method\(\):%L -%msg%n
		
	

	
	
		${log.base}/${log.moduleName}.log
		
		
			${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip
			
			
			
				${log.max.size}
			
		
		
		
			%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method\(\):%L -%msg%n
		
	
	
	
	
		${log.base}/${log.moduleName}_other.log
		
			${log.base}/archive/${log.moduleName}_other_%d{yyyy-MM-dd}.%i.log.zip
			
			
				${log.max.size}
			
		
		
			%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method\(\):%L -%msg%n
		
	

	
	
		${log.base}/${log.moduleName}_err.log
		
			${log.base}/archive/${log.moduleName}_err_%d{yyyy-MM-dd}.%i.log.zip
			
			
				${log.max.size}
			
		
		
			%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method\(\):%L - %msg%n
		
		
		
			ERROR
			ACCEPT
			DENY
		
	

   
    
    
	
		0
		256
		true
		
	

	
		0
		256
		true
		
	

	
	
		
		 
		
		
	
	
	
	
		 
		
		
	


还有另一个网上的找的配置文件,笔者 没有使用过,不过,大家可以参考下来写:




    
    

    
    
	
    
	
	
	
	
	
    
    	  
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
        
    

    
    
        ${logPath}/debug/debug.log
		
        
            ${logPath}/debug/debug.%d{yyyy-MM-dd}.log
            
            ${maxHistory}
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            UTF-8
        
    
	
    
    
        ${logPath}/info/info.log

        
            ${logPath}/info/info.%d{yyyy-MM-dd}.log
            
            ${maxHistory}
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            UTF-8
        
         
         
            INFO
            ACCEPT  
    		DENY
        
    

    	
    
        ${logPath}/warn/warn.log

        
            ${logPath}/warn/warn.%d{yyyy-MM-dd}.log
            
            ${maxHistory}
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            UTF-8
         
        
        
            WARN
        
    
    
    
        ${logPath}/error/error.log

        
            ${logPath}/error/error.%d{yyyy-MM-dd}.log
            
            ${maxHistory}
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            UTF-8
        
        
        
            ERROR
        
    

    
    
        ${logPath}/sql/sql.log

        
            ${logPath}/sql/sql.%d{yyyy-MM-dd}.log
            
            ${maxHistory}
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            UTF-8
        
    
	
    
    
        ${logPath}/business/business.log

        
            ${logPath}/business/business.%d{yyyy-MM-dd}.log
            
            ${maxHistory}
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            UTF-8
        
    
	
	
    
         
        
    
    
         
    
    
         
    
    
         
    

	

    
    
    
    
        
        
    
    
    
    
	
    
        
     
	
	
        
    
    
    
        
    
    


附件

 里面的转换符说明:

 

转换符 作用
c {length } 
lo {length } 
logger {length } 
输出日志的logger名,可有一个整形参数,功能是缩短logger名,设置为0表示只输入logger最右边点符号之后的字符串。
Conversion specifier Logger name Result
%logger mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar
%logger{0} mainPackage.sub.sample.Bar Bar
%logger{5} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{10} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{15} mainPackage.sub.sample.Bar m.s.sample.Bar
%logger{16} mainPackage.sub.sample.Bar m.sub.sample.Bar
%logger{26} mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar

 

C {length } 
class {length } 
输出执行记录请求的调用者的全限定名。参数与上面的一样。尽量避免使用,除非执行速度不造成任何问题。
contextName 
cn 
输出上下文名称。
d {pattern } 
date {pattern } 
输出日志的打印日志,模式语法与java.text.SimpleDateFormat 兼容。
Conversion Pattern Result
%d 2006-10-20 14:06:49,812
%date 2006-10-20 14:06:49,812
%date{ISO8601} 2006-10-20 14:06:49,812
%date{HH:mm:ss.SSS} 14:06:49.812
%date{dd MMM yyyy ;HH:mm:ss.SSS} 20 oct. 2006;14:06:49.812
F / file 输出执行记录请求的java源文件名。尽量避免使用,除非执行速度不造成任何问题。
caller{depth}caller{depth, evaluator-1, ... evaluator-n} 输出生成日志的调用者的位置信息,整数选项表示输出信息深度。

例如, %caller{2}   输出为:

0    [main] DEBUG - logging statement 
Caller+0   at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)

例如, %caller{3}   输出为:

16   [main] DEBUG - logging statement 
Caller+0   at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)
L / line 输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。
m / msg / message

输出应用程序提供的信息。

M / method 输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
n 输出平台先关的分行符“\n”或者“\r\n”。
p / le / level 输出日志级别。
r / relative 输出从程序启动到创建日志记录的时间,单位是毫秒
t / thread 输出产生日志的线程名。
replace(p ){r, t}

p 为日志内容,r 是正则表达式,将p 中符合r 的内容替换为t 。

例如, "%replace(%msg){'\s', ''}"

更多技术请关注笔者微信技术公众号"单例模式"

 

 

你可能感兴趣的:(Log4j)