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 {
/**
* 创建logger实例
*
* @param clazz 事件日志发生类
* @param ifconsole 是否输出到控制台
* @param iffile 是否输出到文件
* @param logfile 日志文件地址(路径分割使用“/”)
* @param iflocate 是否定位事件日志发生位置(类.方法 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) {
// 日志内容形式如: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 {
// 日志内容形式如: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里输出,默认为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;
}
/**
* 创建logger实例(仅输出到控制台)
*
* @param clazz 事件日志发生类
* @param iflocate 是否定位事件日志发生位置(类.方法 line)
* @return logger
*/
public static logger getlogger(class<?> clazz, boolean iflocate) {
return getlogger(clazz, true, false, null, iflocate);
}
/**
* 创建logger实例(仅输出到文件)
*
* @param clazz 事件日志发生类
* @param logfile 日志文件地址(路径分割使用“/”)
* @param iflocate 是否定位事件日志发生位置(类.方法 line)
* @return logger
*/
public static logger getlogger(class<?> clazz, string logfile, boolean iflocate) {
return getlogger(clazz, false, true, logfile, iflocate);
}
}