SpringBoot配置log4j輸出日志的案例講解
下文筆者講述SpringBoot配置log4j的方法分享,如下所示
SpringBoot日志輸出
springboot框架中默認(rèn)使用logback進(jìn)行日志輸出
當(dāng)然它也可以配置其它的日志框架
SpringBoot配置log4j
Springboot配置log4j的方法:
1.添加log4j.properties配置文件
2.初始化配置文件
配置log4j文件
添加log4j.properties配置文件
配置文件添加的路徑
在工程src/main/resources下
文件內(nèi)容
#log4j.rootLogger=CONSOLE,info,error,DEBUG log4j.rootLogger=info,error,CONSOLE,DEBUG log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.logger.info=info log4j.appender.info=org.apache.log4j.DailyRollingFileAppender log4j.appender.info.layout=org.apache.log4j.PatternLayout log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.appender.info.datePattern='.'yyyy-MM-dd log4j.appender.info.Threshold = info log4j.appender.info.append=true #log4j.appender.info.File=/home/java265project/logs/info/api_services_info log4j.appender.info.File=/Users/java265project/logs/info/api_services_info log4j.logger.error=error log4j.appender.error=org.apache.log4j.DailyRollingFileAppender log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.appender.error.datePattern='.'yyyy-MM-dd log4j.appender.error.Threshold = error log4j.appender.error.append=true #log4j.appender.error.File=/home/java265project/logs/error/api_services_error log4j.appender.error.File=/Users/java265project/logs/error/api_services_error 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{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd log4j.appender.DEBUG.Threshold = DEBUG log4j.appender.DEBUG.append=true #log4j.appender.DEBUG.File=/home/java265project/logs/debug/api_services_debug log4j.appender.DEBUG.File=/Users/java265project/logs/debug/api_services_debug ### Debug log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
注意事項(xiàng): 1.log4j.properties文件中 當(dāng)部署線上環(huán)境,需要釋放掉注釋語(yǔ)句,并注釋線下配置語(yǔ)句。 #log4j.appender.info.File=/home/java265project/logs/info/api_services_info log4j.appender.info.File=/Users/java265project/logs/info/api_services_info 2.日志配置涉及三個(gè)級(jí)別:info、error、debug
例:
初始化log4j配置
springboot啟動(dòng)是通過(guò)main入口函數(shù)
需在main入口函數(shù)中設(shè)置log4j初始化
public class App { private static final Logger logger = LoggerFactory.getLogger(App.class); @Value("${server.port}") private int port; @Value("${server.sessionTimeout}") private int sessionTimeout; static { try{ // 初始化log4j String log4jPath = ""; if(Constant.LOG_MODE == 1){ // 配置線上地址 log4jPath = App.class.getClassLoader().getResource("").getPath()+"java265project/config/log4j.properties"; logger.info("Log4j線上生產(chǎn)模式初始化。。。"); }else{ // 配置本地地址 log4jPath = App.class.getClassLoader().getResource("").getPath()+"log4j.properties"; logger.info("Log4j線下開(kāi)發(fā)模式初始化。。。"); } logger.info("初始化Log4j。。。。"); logger.info("path is "+ log4jPath); PropertyConfigurator.configure(log4jPath); }catch (Exception e){ logger.error(e.toString()); } } public static void main(String[] args) { final String[] temp = args; logger.info("oops: main入口函數(shù)編碼-" +System.getProperty("file.encoding")); if(Constant.LOG_MODE == 0){ SpringApplication.run(App.class, args); logger.info("oops: 線下開(kāi)發(fā)測(cè)試"); }else{ logger.info("oops:" + args[0]); } if(ArrayUtils.isNotEmpty(args)) { // 如果你的應(yīng)用程序,運(yùn)行后不自動(dòng)退出,那么處理start時(shí)不要執(zhí)行正常的代碼,否則在部署測(cè)試 appctl.sh 的時(shí)候,會(huì)一直等待進(jìn)程退出 if(args[0].equals("startup")) { new Thread( new Runnable(){ public void run(){ System.out.println("啟動(dòng)Mythread子線程"); logger.info("啟動(dòng)Mythread子線程"); SpringApplication.run(App.class, temp); } }).start(); System.out.println("program startup"); logger.info("program startup"); }else if(args[0].equals("stop")) { System.out.println("program stop"); logger.info("program stop"); }else if(args[0].equals("restart")) { System.out.println("program restart"); logger.info("program restart"); }else if(args[0].equals("status")) { System.out.println("program status"); logger.info("program status"); } } }
優(yōu)化配置
可對(duì)log4j.properties文件進(jìn)行調(diào)整
使其配置更簡(jiǎn)單
log4j.rootLogger=${log.root} log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.logger.info=info log4j.appender.info=org.apache.log4j.DailyRollingFileAppender log4j.appender.info.layout=org.apache.log4j.PatternLayout log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.appender.info.datePattern='.'yyyy-MM-dd log4j.appender.info.Threshold = info log4j.appender.info.append=true log4j.appender.info.File=${log.base}/java265project/logs/info/api_services_info log4j.logger.error=error log4j.appender.error=org.apache.log4j.DailyRollingFileAppender log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.appender.error.datePattern='.'yyyy-MM-dd log4j.appender.error.Threshold = error log4j.appender.error.append=true log4j.appender.error.File=${log.base}/java265project/logs/error/api_services_error 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{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd log4j.appender.DEBUG.Threshold = DEBUG log4j.appender.DEBUG.append=true log4j.appender.DEBUG.File=${log.base}/java265project/logs/debug/api_services_debug ### Debug log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
與之相應(yīng)的main函數(shù)新增如下代碼,同時(shí)去掉static代碼塊:
System.setProperty("log.root",Constant.LOG_ROOT_DAILY); System.setProperty("log.base",Constant.LOG_PATH_DAILY);
到此這篇關(guān)于SpringBoot配置log4j輸出日志的案例講解的文章就介紹到這了,更多相關(guān)SpringBoot配置log4j輸出日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Struts2實(shí)現(xiàn)生成動(dòng)態(tài)驗(yàn)證碼并驗(yàn)證實(shí)例代碼
這篇文章主要介紹了Struts2實(shí)現(xiàn)生成動(dòng)態(tài)驗(yàn)證碼并驗(yàn)證實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06SpringIOC容器Bean的作用域及生命周期實(shí)例
這篇文章主要為大家介紹了SpringIOC容器Bean的作用域及生命周期實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05JDK常用命令jps jinfo jstat的具體說(shuō)明與示例
JDK本身提供了很多方便的JVM性能調(diào)優(yōu)監(jiān)控工具,除了集成式的VisualVM和jConsole外,還有jps、jinfo、jstat等小巧的工具,本文章希望能起拋磚引玉之用,讓大家能開(kāi)始對(duì)JVM性能調(diào)優(yōu)的常用工具有所了解2021-09-09關(guān)于Java中的mysql時(shí)區(qū)問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于Java中mysql時(shí)區(qū)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a
這篇文章主要介紹了Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02spring注入在有常量的情況下使用@AllArgsConstructor操作
這篇文章主要介紹了spring注入在有常量的情況下使用@AllArgsConstructor操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09springboot中application.yml多環(huán)境生效規(guī)則說(shuō)明
這篇文章主要介紹了springboot中application.yml多環(huán)境生效規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07