正在把日志转换成Log4j2

醉酒当歌 提交于 2019-12-21 17:58:27

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

    2017年5月6日,近来又发现一篇关于log4j2的使用,非常详细Log4j2 简明教程  

 

  去年转了一篇关于log4j2的使用,那时只是简单的转文章,并没有使用。现在在整理以往的资料,打算全部使用log4j2,以下是过程。

1、pom.xml添加

 

<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.5</version>
		</dependency>

 

 

2、log4j2配置文件,在resources中添加Log4j2.xml文件,内容如下,详细可参考Log4j2使用

 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
日志级别
trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。
debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。
info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。
warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。
error: 错误信息。用的也比较多。
fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。
 -->
<Configuration status="OFF">
	<!-- 定义日志存放目录 -->
	<properties>
		<property name="logPath">logs</property>
	</properties>
	<!--先定义所有的appender(输出器) -->
	<Appenders>
		<!--输出到控制台 -->
		<Console name="ConsoleLog" target="SYSTEM_OUT">
			<!--只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
			<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
			<!--输出日志的格式 -->
			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n" />
                        <!-- <PatternLayout pattern="%-d [%t] %-5p %c{1}:%L - %m%n" /> -->
		</Console>
		<!--输出到文件 -->
		<File name="FileLog" fileName="${logPath}/error.log">
			<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
		</File>
		<!--输出到循环日志,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
		<RollingFile name="RollingFileLog" fileName="${logPath}/app.log" filePattern="${logPath}/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
			<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
			<SizeBasedTriggeringPolicy size="50MB" />
		</RollingFile>
	</Appenders>
	<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
	<Loggers>
		<!--建立一个默认的root的logger,记录大于level高于TRACE的信息,如果这里的level高于Appenders中的,则Appenders中也是以此等级为起点,比如,这里level="fatal",则Appenders中只出现fatal信息 -->
		<Root level="TRACE">
			<!-- 输出器,可选上面定义的任何项组合,或全选,做到可随意定制 -->
			<AppenderRef ref="ConsoleLog" />
			<!-- <AppenderRef ref="FileLog" /> -->
			<!-- <AppenderRef ref="RollingFileLog" /> -->
		</Root>
	</Loggers>
</Configuration>

    其中,在调试中可以只使用Console,信息较多的话开启File,正常使用过程只用RollingFile

 

 

3、在需要使用的类中添加

 

 

private static Logger logger = LogManager.getLogger(LogTest.class);

 

 

4、然后就可以使用了,比如

 

 

public boolean hello() {
		logger.entry(); // trace级别的信息,单独列出来是希望你在某个方法或者程序逻辑开始的时候调用,和logger.trace("entry")基本一个意思
		logger.trace("我是trace信息");
		logger.debug("我是debug信息");
		logger.info("我是info信息"); // info级别的信息
		logger.warn("我是warn信息");
		logger.error("我是error信息"); // error级别的信息,参数就是你输出的信息
		logger.fatal("我是fatal信息");
		logger.log(Level.DEBUG, "我是Level.DEBUG信息"); // 这个就是制定Level类型的调用:谁闲着没事调用这个,也不一定哦!
		logger.exit(); // 和entry()对应的结束方法,和logger.trace("exit");一个意思
		return false;
	}

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!