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注意事項:
1.log4j.properties文件中
當(dāng)部署線上環(huán)境,需要釋放掉注釋語句,并注釋線下配置語句。
#log4j.appender.info.File=/home/java265project/logs/info/api_services_info
log4j.appender.info.File=/Users/java265project/logs/info/api_services_info
2.日志配置涉及三個級別:info、error、debug例:
初始化log4j配置
springboot啟動是通過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線下開發(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: 線下開發(fā)測試");
}else{
logger.info("oops:" + args[0]);
}
if(ArrayUtils.isNotEmpty(args))
{
// 如果你的應(yīng)用程序,運行后不自動退出,那么處理start時不要執(zhí)行正常的代碼,否則在部署測試 appctl.sh 的時候,會一直等待進(jìn)程退出
if(args[0].equals("startup"))
{
new Thread(
new Runnable(){
public void run(){
System.out.println("啟動Mythread子線程");
logger.info("啟動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)化配置
可對log4j.properties文件進(jìn)行調(diào)整
使其配置更簡單
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ù)新增如下代碼,同時去掉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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Struts2實現(xiàn)生成動態(tài)驗證碼并驗證實例代碼
這篇文章主要介紹了Struts2實現(xiàn)生成動態(tài)驗證碼并驗證實例代碼的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06
JDK常用命令jps jinfo jstat的具體說明與示例
JDK本身提供了很多方便的JVM性能調(diào)優(yōu)監(jiān)控工具,除了集成式的VisualVM和jConsole外,還有jps、jinfo、jstat等小巧的工具,本文章希望能起拋磚引玉之用,讓大家能開始對JVM性能調(diào)優(yōu)的常用工具有所了解2021-09-09
Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a
這篇文章主要介紹了Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
spring注入在有常量的情況下使用@AllArgsConstructor操作
這篇文章主要介紹了spring注入在有常量的情況下使用@AllArgsConstructor操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
springboot中application.yml多環(huán)境生效規(guī)則說明
這篇文章主要介紹了springboot中application.yml多環(huán)境生效規(guī)則說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07

