LOG4J程序配置日志信息


public class Log4jUtil {

private static Properties prop = new Properties();
static {
try {
prop.load(Log4jUtil.class.getResourceAsStream("/log4j.mapping"));
} catch (Exception e) {
e.printStackTrace();
}
}

/***
* @param className
* this.getClass().getName()
* @return
*/
public static String getLog4jInfo(Class<?> classinf) {
String logInfo = "";
StackTraceElement[] stack = (new Throwable()).getStackTrace();
for (int i = 0; i < stack.length; i++) {
StackTraceElement ste = stack[i];
if (classinf.getName().equals(ste.getClassName())) {
logInfo = "\n" + ste.getClassName() + "." + ste.getMethodName() + "(" + ste.getFileName() + ":"
+ ste.getLineNumber() + ") ";
return logInfo;
}
}
if (logInfo.length() == 0) {
logInfo = "\n" + classinf.toString();
}
return logInfo;
}

public static Logger getLogger(Class<?> className) {

Logger loggerFile = null;
// 获取该类对应的日志文件名,未找到时,使用fileLog
String name = className.getName();
String value = "";
while (name.contains(".")) {
value = (String) prop.get(name);
if (value != null && value.length() > 0) {
break;
}
name = name.substring(0, name.lastIndexOf("."));
}

if (value != null && value.length() > 0) {
loggerFile = LogManager.exists(name);
if (loggerFile == null) {
loggerFile = LogManager.getLogger(name);
}
FileAppender fileAppender = (FileAppender) loggerFile.getAppender(name);
if (fileAppender == null) {

// 默认日志文件输出appender
FileAppender appender = (FileAppender) LogManager.getLoggerRepository().getRootLogger()
.getAppender("fileLog");

// 新建Appender
fileAppender = new DailyRollingFileAppender();
fileAppender.setLayout(appender.getLayout());
fileAppender.addFilter(appender.getFilter());
fileAppender.setEncoding(appender.getEncoding());

fileAppender.setFile(appender.getFile().substring(0, appender.getFile().lastIndexOf("/") + 1) + value);
fileAppender.setName(name);

fileAppender.activateOptions();
loggerFile.addAppender(fileAppender);
loggerFile.setLevel(LogManager.getLoggerRepository().getRootLogger().getLevel());
}
} else {
loggerFile = LogManager.getLoggerRepository().getRootLogger();
}

return loggerFile;
}


以上代码可以避免冗余的配置,使不同的类具有不同的日志输出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值