1. 程式人生 > >SpringBoot之——log4j日誌配置案例

SpringBoot之——log4j日誌配置案例

在建立Spring Boot工程時,我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內容就是Spring Boot預設的日誌框架Logback,所以我們在引入log4j之前,需要先排除該包的依賴,再引入log4j的依賴,就像下面這樣:

一、引入log4j依賴

<!-- 忽略自帶的日誌框架. -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
   <exclusions>
       <exclusion>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-logging</artifactId>
      </exclusion>
   </exclusions>
</dependency>     
<!-- log4j. -->
<dependency> 
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

二、配置log4j-spring.properties

在引入了log4j依賴之後,只需要在src/main/resources目錄下加入log4j-spring.properties配置檔案,就可以開始對應用的日誌進行配置使用。

注意:Spring Boot官方推薦優先使用帶有-spring的檔名作為你的日誌配置(如使用log4j-spring.properties,而不是log4j.properties,不過取名為log4j.properties也是沒有問題的

1、控制檯輸出
通過如下配置,設定root日誌的輸出級別為INFO,appender為控制檯輸出stdout

# LOG4J配置
log4j.rootCategory=INFO,stdout
# 控制檯輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
2、輸出到檔案
在開發環境,我們只是輸出到控制檯沒有問題,但是到了生產或測試環境,或許持久化日誌內容,方便追溯問題原因。可以通過新增如下的appender內容,按天輸出到不同的檔案中去,同時還需要為log4j.rootCategory新增名為file的appender,這樣root日誌就可以輸出到logs/springboot.log檔案中了。
# LOG4J配置
log4j.rootCategory=INFO,stdout,file
# 日誌輸出到檔案
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.file=logs/springboot.log 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n 
當然輸出到檔案和輸出到控制檯是可以並行存在的。

3、分類輸出
當我們日誌量較多的時候,查詢問題會非常困難,常用的手段就是對日誌進行分類,比如:可以按不同package進行輸出。通過定義輸出到logs/my.log的appender,並對com.didispace包下的日誌級別設定為DEBUG級別、appender設定為輸出到logs/my.log的名為didifile的appender。

# com.kfit包下的日誌配置
log4j.category.com.kfit=DEBUG, didifile
# com.didispace下的日誌輸出
log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.didifile.file=logs/my.log 
log4j.appender.didifile.DatePattern='.'yyyy-MM-dd 
log4j.appender.didifile.layout=org.apache.log4j.PatternLayout 
log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
可以對不同級別進行分類,比如對ERROR級別輸出到特定的日誌檔案中,具體配置可以如下:
# LOG4J配置
log4j.rootCategory=INFO, stdout,errorfile
log4j.logger.error=errorfile
# error日誌輸出
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=logs/error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n %5p %c{1}:%L - %m%n
4、輸出到資料庫
將日誌檔案輸出到資料庫配置:
# LOG4J配置
log4j.rootCategory=INFO,stdout,jdbc
# 資料庫輸出
log4j.appender.jdbc=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.jdbc.driver=com.mysql.jdbc.Driver
log4j.appender.jdbc.URL=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true
log4j.appender.jdbc.user=root
log4j.appender.jdbc.password=root
log4j.appender.jdbc.sql=insert into log_icecoldmonitor(level,category,thread,time,location,note) values('%p','%c','%t','%d{yyyy-MM-dd HH:mm:ss:SSS}','%l','%m')
引入資料庫驅動:
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>
建立表:
CREATE TABLE `log_icecoldmonitor` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `level` varchar(255) NOT NULL DEFAULT '' COMMENT '優先順序',
  `category` varchar(255) NOT NULL DEFAULT '' COMMENT '類目',
  `thread` varchar(255) NOT NULL DEFAULT '' COMMENT '程序',
  `time` varchar(30) NOT NULL DEFAULT '' COMMENT '時間',
  `location` varchar(255) NOT NULL DEFAULT '' COMMENT '位置',
  `note` text COMMENT '日誌資訊',
  PRIMARY KEY (`Id`)
)
這樣就可以儲存到日誌到資料庫了,可能會出現如下異常資訊:
Java連線Mysql資料庫警告:Establishing SSL connection
原因是MySQL在高版本需要指明是否進行SSL連線。解決方案如下:
在mysql連線字串url中加入ssl=true或者false即可,如下所示。
url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true

相關推薦

SpringBoot——log4j日誌配置案例

在建立Spring Boot工程時,我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內容就是Spring Boot預設的日誌框架Logback,所以我們在引入log4j之前,需要先排除該包的依賴,再引入

SpringBoot——LogBack日誌配置與多環境實戰

一、Slf4j+Logback的快速實踐spring-boot預設支援logback,所以無需引用任何以來只需要,配置application.properties即可,如果要功能豐富些,則配置下logback.xml。1、在application.properties裡配置的

springboot添加log4j日誌配置log4j.xml生成日誌文件

ota urn version xmlns private 1.0 owa ram .json 第一步:添加pom文件依賴 <!-- log4j --> <dependency> <

SpringBootyml檔案配置日誌檔案配置

Application.yml配置: app: instance: code: portal profile: dev rest: # profile: dev profiles: datacenter: de

Springboot 自定義配置文件及讀取配置文件

ebo hello path host 目錄 tps pre 示例 control 本文章來自【知識林】 讀取核心配置文件 核心配置文件是指在resources根目錄下的application.properties或application.yml配置文件,讀取這兩個配置文件

Log4J日誌配置詳解

append tar 行號 中間 註意 -h 控制 復制代碼 #### 一、Log4j簡介Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layouts(布局)。這裏可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這

Linux學習總結(三十五)lamp訪問日誌配置

lamp 訪問日誌 靜態元素過期時間 日誌切割 日誌瘦身 一 訪問日誌不記錄靜態文件訪問信息 網站大多元素為靜態文件,如圖片、css、js等,記錄這些訪問信息對我們運維工作沒有多大意義,如果一個站點訪問量很大,那麽一天就可以達到幾GB。影響我們磁盤的工作效率,那麽我們就可以配置虛擬主機限制

Log4J日誌配置總結

一、Log4j簡介 Log4j有三個主要的元件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裡可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個元件可以輕鬆地記錄資訊的型別和級別,並可以在執行時控制日誌輸出的樣式和位置。 1、Logge

06-SpringBootWEB(四)—— 配置AOP切面

SpringBoot之WEB(四) 1. 新增AOP依賴 2. 編寫切面類 3. 執行結果 4. 原始碼下載 1. 新增AOP依賴 <dependency> <groupId>org.sprin

springboot整合log4j日誌記錄

1、在src/main/resources下面新建一個名為log4j.properties的檔案: ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j

mybatis上的log4j日誌配置輸出

Log4j Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件,甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌資訊的級別,我們能夠更加細緻

JVM系列第14講:JVM引數GC日誌配置

說到 Java 虛擬機器,不得不提的就是 Java 虛擬機器的 GC(Garbage Collection)日誌。而對於 GC 日誌,我們不僅要學會看懂,而且要學會如何設定對應的 GC 日誌引數。今天就讓我們來學習一下 Java 虛擬機器中所有與 GC 日誌有關的引數。相信掌握了這些引數之後,對於大家線上列印

SpringBoot——自定義日誌配置

一、SpringBoo的t預設配置     SpringBoot在其包下有日誌框架相關的配置檔案,含logback、log4j2等,這也是為什麼SpringBoot可以直接使用這些日誌框架的原因: 二、自定義日誌框架配置檔案     有時我們為了開啟日誌框架的高階功

SpringBoot專欄:日誌配置那些事_log4j_logback_slf4j(第5講)

開篇: 以後開發的時候,日誌記錄方法的呼叫,不應該來直接呼叫日誌的實現類,而是呼叫日誌抽象層裡面的方法; 給系統裡面匯入slf4j的jar和 logback的實現jar   圖解 每一個日誌的實現框架都有自己的配置檔案。使用slf4j以後,配置檔案還是

配置Springboot安裝並配置Gradle

下載Gradle 首先在官方網站下載所需的Gradle版本,推薦下載all版本,內含說明文件(程式設計師必備技能). 配置Gradle 由於我所使用的是window10,在此就不敘述其他系統電腦的配置了.此電腦-->計算機-->系統屬性-->高階系統設定

SpringBoot整合+logback日誌配置

本次演示的程式碼結構如下,基於maven,整合SpringBoot、Spring、Mybaits的SSM框架。同時測試logback日誌框架的使用及配置。 1.建立maven工程,修改pom.xml檔案 <project xmlns="http://maven.ap

SpringBoot 自定義配置檔案及讀取配置檔案application.properties或yml

讀取核心配置檔案核心配置檔案是指在resources根目錄下的application.properties或application.yml配置檔案,讀取這兩個配置檔案的方法有兩種,都比較簡單。 核心配置檔案application.properties內容如下: server.port=9090 test.m

Log4j日誌-配置檔案說明

參考: https://www.cnblogs.com/yudar/p/5113655.html https://blog.csdn.net/niuma1024/article/details/51362606 一、簡介 Log4j由三個重要的元件構成:日誌資訊的優先順序,日誌資訊的

4.Springboot 自定義配置檔案及讀取配置檔案

讀取核心配置檔案 核心配置檔案是指在resources根目錄下的application.properties或application.yml配置檔案,讀取這兩個配置檔案的方法有兩種,都比較簡單。 核心配置檔案application.properties內容如下: server.port=9090 tes

Log4J日誌配置詳解和自定義log4j日誌級別及輸出日誌到不同檔案實現方法

package com.jo.work.log4j; import java.util.Enumeration; import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.