java不通過配置文件初始化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 是否輸出到控制臺
* @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): 測試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] : 測試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不會在父Logger的appender里輸出,默認(rèn)為true
if(ifConsole == true) { // 日志輸出到控制臺
ConsoleAppender consoleAppender = new ConsoleAppender();
consoleAppender.setLayout(layout);
consoleAppender.setThreshold(Level.INFO); // ConsoleAppender日志級別為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日志級別為INFO
fileAppender.activateOptions();
logger.addAppender(fileAppender);
}
return logger;
}
/**
* 創(chuàng)建Logger實(shí)例(僅輸出到控制臺)
*
* @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)文章
MyBatis insert操作插入數(shù)據(jù)之后返回插入記錄的id
今天小編就為大家分享一篇關(guān)于MyBatis插入數(shù)據(jù)之后返回插入記錄的id,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03Springmvc發(fā)送json數(shù)據(jù)轉(zhuǎn)Java對象接收
這篇文章主要介紹了Springmvc發(fā)送json數(shù)據(jù)轉(zhuǎn)Java對象接收,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10Mybatis 中的sql批量修改方法實(shí)現(xiàn)
在項(xiàng)目中遇到需要批量更新的功能,原本想的是在Java中用循環(huán)訪問數(shù)據(jù)庫去更新,但是心里總覺得這樣做會不會太頻繁了,太耗費(fèi)資源了,效率也很低,查了下mybatis的批量操作,原來確實(shí)有<foreach>標(biāo)簽可以做到,下面通過本文給大家介紹下2017-01-01Java線程使用同步鎖交替執(zhí)行打印奇數(shù)偶數(shù)的方法
這篇文章主要介紹了Java線程使用同步鎖交替執(zhí)行打印奇數(shù)偶數(shù)的方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Java實(shí)現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能,涉及java針對圖片的讀取、屬性修改等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09Java class文件格式之?dāng)?shù)據(jù)類型(二)_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java class文件格式之?dāng)?shù)據(jù)類型(二)的相關(guān)資料,需要的朋友可以參考下2017-06-06