Spring+SpringMVC+MyBatis+easyUI整合最佳化
上一篇文章主要講述了一下syso和Log間的一些區別與比較,重點是在專案的日誌功能上,因此,承接前文《》,本文是一個較為直觀的日誌功能案例,java的日誌框架很多,如Log4j、Log4j2、logback、SLF4J,篇幅有限,所以本篇只介紹一下Log4j,並將其整合到專案中,對於其他日誌框架,想了解的可以對應的去學習一下。
Log4j簡介日誌記錄功能是一個專案中重要的組成部分,log4j是APache下的一個開源日誌元件,為java開發者提供了很大的便利。
Log4j由三個重要的元件構成:
- Loggers,日誌資訊的優先順序
日誌資訊的優先順序從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日誌資訊的重要程度,設定為高階別的優先順序時,低優先順序的日誌將不會輸出,比如將日誌級別設定為INFO,則DEBUG級別的目錄不會被記錄,為了防止日誌輸出氾濫,最好不要將日誌級別設定太低,一般為INFO即可。
- Appenders,日誌資訊的輸出目的地
日誌資訊的輸出目的地指定了日誌將列印到控制檯還是檔案中,引數如下:
org.apache.log4j.ConsoleAppender (控制檯)
org.apache.log4j.FileAppender (檔案)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案,本文中的案例選擇的策略)
org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案,也是一個不錯的選擇)
org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)
- Layouts,日誌資訊的輸出格式
輸出格式的功能是控制日誌資訊的顯示內容,引數如下:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式,本案例所選擇的策略,需對日誌格式進行設定)
org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)
下面是一個簡單的案例,並與System.out.print進行比較,程式碼在github上,可以下載自己執行一下。
日誌輸出:
import org.apache.log4j.Logger;
public class LogTest {
static Logger log = Logger.getLogger(LogTest.class);//獲取日誌記錄器
public static void main(String... arg0) {
long start = System.currentTimeMillis();
for (int i = 0; i
syso輸出:
public class SysoTest {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i
Log4j配置檔案如下:
log4j.rootLogger=DEBUG, debug
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern= [%d{HH:mm:ss}] %c{1} - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=./logs/ssm-maven/debug.log
此配置檔案為log4j-test.properties,也會上傳到倉庫中,注意:在測試本例時,需將此檔名改為log4j.properties
執行後可得到如下結果,在專案logs目錄下建立了debug.log資料夾並將輸出寫入到檔案中。
上面只是一個簡單的demo,重要的還是要將日誌功能整合到專案中來。
配置檔案及講解如下:
#log4j.rootLogger = [level],appenderName,appenderName2,...
#level是日誌記錄的優先順序,分為OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL
##Log4j建議只使用四個級別,優先順序從低到高分別是DEBUG,INFO,WARN,ERROR
#透過在這裡定義的級別,您可以控制到應用程式中相應級別的日誌資訊的開關
#比如在這裡定義了INFO級別,則應用程式中所有DEBUG級別的日誌資訊將不被列印出來
log4j.rootLogger=DEBUG, debug
#Log4j針對不同包指定level:
#一般在生產環境中應用系統,日誌級別調整為INFO以避免過多的輸出日誌。
#但某些時候,需要跟蹤具體問題,那麼就得開啟DEBUG日誌。
#但是如果開啟log4j.rootLogger,則需要的資訊就會淹沒在日誌的海洋中。
#此時,需要單獨指定某個或者某些Logger的日誌級別為DEBUG,而rootLogger保持INFO不變。
#參考配置如下(指定com.ssm.maven.core.admin類的日誌輸出)
#分包設定,admin與service包中的日誌輸出分離
log4j.logger.com.ssm.maven.core.admin=INFO,admin
log4j.logger.com.ssm.maven.core.service=INFO,service
log4j.logger.org.springframework=OFF
log4j.logger.org.mybatis.spring=ON
log4j.logger.org.springframework.context.annotation=OFF
log4j.appender.admin=org.apache.log4j.DailyRollingFileAppender
log4j.appender.admin.layout=org.apache.log4j.PatternLayout
log4j.appender.admin.layout.ConversionPattern= [%d{HH:mm:ss}] %c{1} - %m%n
log4j.appender.admin.datePattern='.'yyyy-MM-dd
log4j.appender.admin.Threshold = INFO
log4j.appender.admin.append=true
#admin包下的日誌輸出到admin.log檔案中
log4j.appender.admin.File=${catalina.home}/logs/ssm-maven/admin.log
log4j.appender.service=org.apache.log4j.DailyRollingFileAppender
log4j.appender.service.layout=org.apache.log4j.PatternLayout
log4j.appender.service.layout.ConversionPattern= [%d{HH:mm:ss}] %c{1} - %m%n
log4j.appender.service.datePattern='.'yyyy-MM-dd
log4j.appender.service.Threshold = INFO
log4j.appender.service.append=true
#admin包下的日誌輸出到service.log檔案中
log4j.appender.service.File=${catalina.home}/logs/ssm-maven/service.log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern= [%d{HH:mm:ss}] %c{1} - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=${catalina.home}/logs/ssm-maven/debug.log
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
部署到tomcat伺服器,並訪問相關頁面後,可以到tomcat目錄的logs目錄下檢視日誌輸出檔案:
檢視日誌檔案,可以得到日誌已經分包輸出的結果。
結語其實無論是System.out或者Log,我們都是希望快速的定位問題,至於更多的使用System.out而不是Log的原因,其實也多是因為覺得System.out更方便,或者不會用Log亦或者是覺得Log不夠靈活,而透過本文中的案例,加上你自己的動手實踐,應該可以讓你對於Log4j技能從不會到會了,也能讓你對於Log4j的靈活性有些認識了。
我的github地址:
其中ssm-maven是本次程式碼更新的目錄。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2798673/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring+SpringMVC+MyBatis+easyUI整合進階篇(十二)Spring整合Redis快取SpringMVCMyBatisUIRedis快取
- Spring+SpringMVC+MyBatis+easyUI整合基礎篇(十)SVN搭建SpringMVCMyBatisUI
- Spring+SpringMVC+MyBatis+easyUI整合基礎篇(九)版本控制SpringMVCMyBatisUI
- Spring+SpringMVC+MyBatis+easyUI整合基礎篇(十二)階段總結SpringMVCMyBatisUI
- Spring+SpringMVC+MyBatis+easyUI整合基礎篇(十一)SVN伺服器進階SpringMVCMyBatisUI伺服器
- 最佳化終端包裝系統的整合
- OPTIMUS — 過程整合與多學科最佳化平臺
- Optimus—多學科模擬整合與最佳化設計平臺
- 整合持續整合工具
- Unity效能最佳化CPU最佳化Unity
- 【springboot】學習4:整合JDBC、整合druid、整合mybatis、整合 SpringSecuritySpring BootJDBCUIMyBatisGse
- HStreamDB Newsletter 2022-07|分割槽模型最佳化、資料整合框架進一步完善模型框架
- 構建無伺服器數倉(三 )EMR Serverless 操作要點、最佳化以及開放整合測試伺服器Server
- MySQL最佳化之連線最佳化MySql
- 前端效能最佳化——圖片最佳化前端
- Unity效能最佳化GPU渲染最佳化UnityGPU
- SpringBoot整合系列-整合JPASpring Boot
- SQL效能最佳化之索引最佳化法SQL索引
- 編譯器最佳化丨Cache最佳化編譯
- 效能最佳化之SQL語句最佳化SQL
- Oracle效能最佳化之SQL最佳化(轉)OracleSQL
- Unity效能最佳化記憶體最佳化Unity記憶體
- MyBatis(九) 整合Spring、整合SpringMVCMyBatisSpringMVC
- SSM整合之CRUD環境搭建整合SSM
- Oracle最佳化之單表分頁最佳化Oracle
- MySQL最佳化之系統變數最佳化MySql變數
- Oracle效能最佳化之應用最佳化(轉)Oracle
- Oracle效能最佳化之最佳化排序操作(轉)Oracle排序
- cuda程式最佳化-2.訪存最佳化
- GreatSQL最佳化技巧:半連線(semijoin)最佳化SQL
- ssm整合SSM
- Mysql 最佳化MySql
- RouterOS最佳化ROS
- oracle最佳化Oracle
- oracle 最佳化Oracle
- dotween最佳化
- TCP最佳化TCP
- spfa最佳化