spring boot log4j2配置(使用log4j2.yml文件)


轉自http://blog.csdn.net/clementad/article/details/51498864

spring boot中,配置log4j2的幾個步驟(使用yml文件):

 

1、pom文件的依賴配置中,去掉spring boot默認的log配置,引入log4j2依賴包:

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. <!-- log related -->  
  2.     <dependency<!-- exclude掉spring-boot的默認log配置 -->  
  3.         <groupId>org.springframework.boot</groupId>  
  4.         <artifactId>spring-boot-starter</artifactId>  
  5.         <exclusions>  
  6.             <exclusion>  
  7.                 <groupId>org.springframework.boot</groupId>  
  8.                 <artifactId>spring-boot-starter-logging</artifactId>  
  9.             </exclusion>  
  10.         </exclusions>  
  11.     </dependency>  
  12.     <dependency<!-- 引入log4j2依賴 -->  
  13.         <groupId>org.springframework.boot</groupId>  
  14.         <artifactId>spring-boot-starter-log4j2</artifactId>  
  15.     </dependency>  
  16.     <dependency>  <!-- 加上這個才能辨認到log4j2.yml文件 -->  
  17.         <groupId>com.fasterxml.jackson.dataformat</groupId>  
  18.         <artifactId>jackson-dataformat-yaml</artifactId>  
  19.     </dependency>  
  20. <!-- end of log related -->     


2、log4j2.yml文件配置(放置在resources文件夾中):

 

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. Configuration:  
  2.   status: warn  
  3.   
  4.   Properties: # 定義全局變量  
  5.     Property: # 缺省配置(用於開發環境)。其他環境需要在VM參數中指定,如下:  
  6.       #測試:-Dlog.level.console=warn -Dlog.level.xjj=trace  
  7.       #生產:-Dlog.level.console=warn -Dlog.level.xjj=info        
  8.       - name: log.level.console  
  9.         value: trace  
  10.       - name: log.level.xjj  
  11.         value: trace         
  12.       - name: log.path  
  13.         value: /opt/logs  
  14.       - name: project.name  
  15.         value: my-spring-boot  
  16.     
  17.   Appenders:  
  18.     Console:  #輸出到控制台  
  19.       name: CONSOLE  
  20.       target: SYSTEM_OUT  
  21.       ThresholdFilter:  
  22.         level: ${sys:log.level.console} # “sys:”表示:如果VM參數中沒指定這個變量值,則使用本文件中定義的缺省全局變量值  
  23.         onMatch: ACCEPT  
  24.         onMismatch: DENY  
  25.       PatternLayout:  
  26.         pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"  
  27.     RollingFile: # 輸出到文件,超過128MB歸檔  
  28.       - name: ROLLING_FILE  
  29.         ignoreExceptions: false  
  30.         fileName: ${log.path}/${project.name}.log  
  31.         filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"  
  32.         PatternLayout:  
  33.           pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"  
  34.         Policies:  
  35.           SizeBasedTriggeringPolicy:  
  36.             size: "128 MB"  
  37.         DefaultRolloverStrategy:  
  38.           max: 1000  
  39.   
  40.   Loggers:  
  41.     Root:  
  42.       level: info  
  43.       AppenderRef:  
  44.         - ref: CONSOLE  
  45.         - ref: ROLLING_FILE  
  46.     Logger: # 為com.xjj包配置特殊的Log級別,方便調試  
  47.       - name: com.xjj  
  48.         additivity: false  
  49.         level: ${sys:log.level.xjj}  
  50.         AppenderRef:  
  51.           - ref: CONSOLE  
  52.           - ref: ROLLING_FILE  


3、測試用例:

 

 

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @SpringApplicationConfiguration(classes = MySpringBootApplication.class)  
  3. public class MySpringBootApplicationTests {  
  4.     protected final Logger logger = LoggerFactory.getLogger(this.getClass());  
  5.     protected final ObjectMapper objectMapper = new ObjectMapper();  
  6.       
  7.     @Test  
  8.     public void contextLoads() {  
  9.         logger.trace("I am trace log.");  
  10.         logger.debug("I am debug log.");  
  11.         logger.warn("I am warn log.");  
  12.         logger.error("I am error log.");  
  13.     }  
  14.   
  15. }  


測試結果:

 

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1.   .   ____          _            __ _ _  
  2.  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
  3. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
  4.  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  
  5.   '  |____| .__|_| |_|_| |_\__, | / / / /  
  6.  =========|_|==============|___/=/_/_/_/  
  7.  :: Spring Boot ::        (v1.3.5.RELEASE)  
  8.   
  9. 2016-05-25 15:36:30,245:INFO main (StartupInfoLogger.java:48) - Starting MySpringBootApplicationTests on WIN-UCBBGRHGRK9 with PID 27276 (C:\workspace-sts\my-spring-boot\target\test-classes started by Xu in C:\workspace-sts\my-spring-boot)  
  10. 2016-05-25 15:36:30,245:DEBUG main (StartupInfoLogger.java:51) - Running with Spring Boot v1.3.5.RELEASE, Spring v4.2.6.RELEASE  
  11. 2016-05-25 15:36:30,245:INFO main (SpringApplication.java:666) - No active profile set, falling back to default profiles: default  
  12. 2016-05-25 15:36:30,285:INFO main (AbstractApplicationContext.java:578) - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@638ef7ed: startup date [Wed May 25 15:36:30 CST 2016]; root of context hierarchy  
  13. 2016-05-25 15:36:30,522:INFO background-preinit (Version.java:30) - HV000001: Hibernate Validator 5.2.4.Final  
  14. 2016-05-25 15:36:31,673:INFO main (StartupInfoLogger.java:57) - Started MySpringBootApplicationTests in 1.726 seconds (JVM running for 2.749)  
  15. 2016-05-25 15:36:31,681:TRACE main (MySpringBootApplicationTests.java:20) - I am trace log.  
  16. 2016-05-25 15:36:31,681:DEBUG main (MySpringBootApplicationTests.java:21) - I am debug log.  
  17. 2016-05-25 15:36:31,682:WARN main (MySpringBootApplicationTests.java:22) - I am warn log.  
  18. 2016-05-25 15:36:31,682:ERROR main (MySpringBootApplicationTests.java:23) - I am error log.  
  19. 2016-05-25 15:36:31,689:INFO Thread-1 (AbstractApplicationContext.java:960) - Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@638ef7ed: startup date [Wed May 25 15:36:30 CST 2016]; root of context hierarchy  


可以看到4個log都出來了,調整log.level參數可以決定讓哪個級別的log出來。

 

同時,硬盤中/opt/logs/目錄下也自動生成了一個叫做my-spring-boot.log的文件,保存了相同的log內容。

詳細的源代碼參考:https://github.com/xujijun/my-spring-boot

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM