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;
	}


以上代码可以避免冗余的配置,使不同的类具有不同的日志输出。

猜你喜欢

转载自haishu.iteye.com/blog/1564810
今日推荐