java不通過(guò)配置文件初始化logger示例
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
public class LoggerUtils {
/**
* 創(chuàng)建Logger實(shí)例
*
* @param clazz 事件日志發(fā)生類
* @param ifConsole 是否輸出到控制臺(tái)
* @param ifFile 是否輸出到文件
* @param logFile 日志文件地址(路徑分割使用“/”)
* @param ifLocate 是否定位事件日志發(fā)生位置(類.方法 line)
* @return Logger
*/
public static Logger getLogger(Class<?> clazz, boolean ifConsole, boolean ifFile, String logFile, boolean ifLocate) {
if(ifConsole == false && ifFile == false) return null;
if(ifFile == true && logFile.trim().length() < 1) return null;
String conversionPattern;
if(ifLocate == true) {
// 日志內(nèi)容形式如:2014-03-11 01:34:45.572 [DEBUG] com.aliyun.qa.utils.LoggerUtilsTest.main(Line:15): 測(cè)試DEBUG日志
conversionPattern = "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c.%M(Line:%L): %m %n";
} else {
// 日志內(nèi)容形式如:2014-03-11 01:34:45.572 [DEBUG] : 測(cè)試DEBUG日志
conversionPattern = "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] : %m %n";
}
PatternLayout layout = new PatternLayout();
layout.setConversionPattern(conversionPattern);
Logger logger = Logger.getLogger(clazz);
logger.removeAllAppenders();
logger.setLevel(Level.DEBUG);
logger.setAdditivity(false); // Logger不會(huì)在父Logger的appender里輸出,默認(rèn)為true
if(ifConsole == true) { // 日志輸出到控制臺(tái)
ConsoleAppender consoleAppender = new ConsoleAppender();
consoleAppender.setLayout(layout);
consoleAppender.setThreshold(Level.INFO); // ConsoleAppender日志級(jí)別為DEBUG
consoleAppender.activateOptions();
logger.addAppender(consoleAppender);
}
if(ifFile == true) { // 日志輸出到文件
FileAppender fileAppender = new FileAppender();
fileAppender.setLayout(layout);
fileAppender.setFile(logFile);
fileAppender.setEncoding("UTF-8");
fileAppender.setAppend(true);
fileAppender.setThreshold(Level.INFO); // FileAppender日志級(jí)別為INFO
fileAppender.activateOptions();
logger.addAppender(fileAppender);
}
return logger;
}
/**
* 創(chuàng)建Logger實(shí)例(僅輸出到控制臺(tái))
*
* @param clazz 事件日志發(fā)生類
* @param ifLocate 是否定位事件日志發(fā)生位置(類.方法 line)
* @return Logger
*/
public static Logger getLogger(Class<?> clazz, boolean ifLocate) {
return getLogger(clazz, true, false, null, ifLocate);
}
/**
* 創(chuàng)建Logger實(shí)例(僅輸出到文件)
*
* @param clazz 事件日志發(fā)生類
* @param logFile 日志文件地址(路徑分割使用“/”)
* @param ifLocate 是否定位事件日志發(fā)生位置(類.方法 line)
* @return Logger
*/
public static Logger getLogger(Class<?> clazz, String logFile, boolean ifLocate) {
return getLogger(clazz, false, true, logFile, ifLocate);
}
}
相關(guān)文章
Java聊天室之使用Socket實(shí)現(xiàn)傳遞圖片
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之使用Socket實(shí)現(xiàn)傳遞圖片功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下2022-10-10
Java?String類和StringBuffer類的區(qū)別介紹
這篇文章主要介紹了Java?String類和StringBuffer類的區(qū)別,?關(guān)于java的字符串處理我們一般使用String類和StringBuffer類有什么不同呢,下面我們一起來(lái)看看詳細(xì)介紹吧2022-03-03
springMVC中基于token防止表單重復(fù)提交方法
本篇文章主要介紹了springMVC中基于token防止表單重復(fù)提交方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
校驗(yàn)非空的注解@NotNull如何取得自定義的message
這篇文章主要介紹了校驗(yàn)非空的注解@NotNull如何取得自定義的message,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring Boot 整合 ShedLock 處理定時(shí)任務(wù)重復(fù)執(zhí)行的問(wèn)題小結(jié)
ShedLock是解決分布式系統(tǒng)中定時(shí)任務(wù)重復(fù)執(zhí)行問(wèn)題的Java庫(kù),通過(guò)在數(shù)據(jù)庫(kù)中加鎖,確保只有一個(gè)節(jié)點(diǎn)在指定時(shí)間執(zhí)行任務(wù),它與SpringScheduler、Quartz等框架結(jié)合使用,本文介紹Spring Boot 整合 ShedLock 處理定時(shí)任務(wù)重復(fù)執(zhí)行的問(wèn)題,感興趣的朋友一起看看吧2025-02-02
java中使用POI生成Excel并導(dǎo)出過(guò)程
這篇文章主要介紹了java中使用POI生成Excel并導(dǎo)出過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
logback如何去掉DubboMonitor煩人的INFO日志
這篇文章主要介紹了logback如何去掉DubboMonitor煩人的INFO日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了java圖片滑動(dòng)登錄驗(yàn)證的相關(guān)原理、實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下2019-09-09

