`

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


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

相关推荐

    log4j中配置日志文件相对路径方法(PDF)

    ### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...

    log4j日志配置以及配置文件详解

    Log4j作为Java领域广泛应用的日志框架,提供了强大的日志记录功能和灵活的配置。本文将深入探讨log4j的配置以及配置文件的详解。** 首先,我们要理解什么是`log4j.properties`文件。这是log4j框架的配置文件,使用...

    tomcat下的log4j日志配置

    在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发效率和系统的可维护性。本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,...

    log4j(二):动态配置日志输出路径

    总结来说,Log4j的动态配置日志输出路径主要涉及对配置文件的解析和重新加载,以及在运行时使用API直接调整日志设置。理解并熟练运用这些方法,可以帮助我们在开发过程中更灵活地管理和监控日志,提高开发效率和问题...

    Log4j日志配置说明,Log4j日志配置说明

    ### Log4j日志配置详解 #### 一、概述 Log4j 是一个基于 Java 的开源日志记录框架,由 Apache 软件基金会维护。它允许开发人员根据等级记录日志信息,使得用户能够控制日志信息的记录级别及去向。本文将通过一份...

    log4j按功能保存日志

    Log4j是一款广泛使用的Java日志记录框架,它允许开发者按照功能模块或特定需求记录应用程序运行过程中的事件信息。在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入...

    log4j实用配置扩展

    例如,可以配置日志信息包含时间戳、线程ID、日志级别、消息内容等。 - **常见Layouts**: - **PatternLayout**:使用模式字符串定义日志格式。 - **HTMLLayout**:生成HTML格式的日志。 - **TTCCLayout**:...

    log4j配置 输出日志 案例

    Log4j是Apache组织开发的一个开源项目,用于生成日志信息。它提供了灵活的配置方式,支持多种输出格式和多个级别的日志记录,如DEBUG、INFO、WARN、ERROR和FATAL。通过配置log4j,我们可以控制日志的输出位置、级别...

    log4j2.xml记录日志到到数据库

    本示例将详细介绍如何配置并使用Log4j2将日志信息记录到MySQL数据库中。 首先,我们要理解Log4j2的核心概念。Log4j2主要包括以下几个组件: 1. **配置文件**:如`log4j2.xml`,这是Log4j2的配置中心,定义了日志...

    SpringBoot框架配置log4j和log4j2的配置代码

    它的核心功能包括定义日志级别(如DEBUG、INFO、WARN、ERROR),配置日志输出目的地(控制台、文件、数据库等),以及自定义日志格式。SpringBoot默认使用的是Logback,但通过简单的配置,我们也可以切换到Log4j。 ...

    log4j 配置日志文件,把日志信息输出到项目的某个文件夹下

    完成这些步骤后,当你的应用程序运行时,log4j会根据配置将日志信息输出到指定的文件夹中。这不仅方便了日志的管理和查看,还可以通过设置不同的日志级别来控制输出的信息量,例如在开发环境中开启DEBUG级别以获取更...

    log4j 日志配置

    这篇博客文章“log4j日志配置”很可能是关于如何配置Log4j以满足特定的日志需求,特别是涉及到`DailyRollingFileAppender`,这是一个将日志输出到按日期滚动的文件中的类。 `DailyRollingFileAppender`是Log4j的一...

    mybatis,log4j打印日志到后台和文件

    Log4j 是一个广泛使用的日志记录工具,能够帮助开发者跟踪应用程序运行过程中的信息、警告、错误等事件。本文将深入探讨如何在 MyBatis 中配置 Log4j,实现日志同时输出到后台控制台和文件。 1. **日志框架集成** ...

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

    log4j记录Debug日志

    Log4j是Apache组织开发的一款广泛使用的Java日志框架,主要功能是用于记录应用程序运行过程中的各种日志信息。在Java编程中,日志记录是非常重要的一环,它可以帮助开发者追踪程序运行状态,定位错误,优化性能,...

    java程序log4j配置

    log4j的配置文件通常是log4j.properties或log4j.xml,用于存储log4j的配置信息。配置文件中可以指定日志的输出目标、日志级别、日志格式等信息。 二、日志输出目标 log4j提供了多种日志输出目标,包括控制台、文件...

    Log4j2学习log4j2.xml配置模板

    *灵活的配置:Log4j2 提供了非常灵活的配置机制,可以根据需要定义不同的日志级别、输出格式和文件名等属性。 *高性能:Log4j2具有非常高的性能,可以handle大量的日志信息。 *灵活的appender:Log4j2 提供了多种...

    tomcat9 slf4j+log4j2 写日志.zip

    3. **配置Tomcat**:在`$CATALINA_HOME/lib`目录下添加`log4j-api.jar`和`log4j-slf4j-impl.jar`,这将使Tomcat使用Log4j2作为其内部的日志系统。 4. **排除其他日志实现**:确保你的应用中没有引入其他的日志实现...

    Log4j2异步写日志效率测试源码

    Log4j2是一款广泛使用的Java日志框架,它提供了丰富的日志记录功能和高度的可配置性。在大型系统中,日志记录是至关重要的,因为它可以帮助开发者追踪系统行为、定位错误以及进行性能分析。而Log4j2的一个显著特性是...

Global site tag (gtag.js) - Google Analytics