log4j2 配置

1、log4j2官方下载地址http://logging.apache.org/log4j/2.x/download.html  基本上你只需要导入下面两个jar包就可以了(xx是乱七八糟的版本号):log4j-core-xx.jar  log4j-api-xx.jar

2、日志级别:

我们现在要调用logger的方法,不过在这个Logger对象中,有很多方法,所以要先了解log4j的日志级别,log4j规定了默认的几个级别:trace<debug<info<warn<error<fatal等。这里要说明一下:

 1)级别之间是包含的关系,意思是如果你设置日志级别是trace,则大于等于这个级别的日志都会输出。

 2)基本上默认的级别没多大区别,就是一个默认的设定。你可以通过它的API自己定义级别。你也可以随意调用这些方法,不过你要在配置文件里面好好处理了,否则就起不到日志的作用了,而且也不易读,相当于一个规范,你要完全定义一套也可以,不用没多大必要。

 3)这不同的级别的含义大家都很容易理解,这里就简单介绍一下:

    trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。

    debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。

    info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。

    warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。

    error: 错误信息。用的也比较多。

    fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。

3、调用方法:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;

	static Logger logger = LogManager.getLogger(HelloWorld.class.getName());

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		logger.trace("1、我是trace信息{}{}","用户信息","业务代码");
		logger.debug("2、我是debug信息");
		logger.info("3、我是info信息");
		logger.warn("4、我是warn信息");
		logger.error("5、我是error信息");
		logger.fatal("6、我是fatal信息");
		logger.info("3、我是info信息");
		
	}
}

 4、创建log4j2.xml配置文件

   默认的级别为error

<?xml version="1.0" encoding="UTF-8"?>  
<configuration status="OFF">  
  <appenders>  
    <Console name="Console" target="SYSTEM_OUT">  
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>  
    </Console>  
  </appenders>  
  <loggers>  
    <root level="error">  
      <appender-ref ref="Console"/>  
    </root>  
  </loggers>  
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!-- status="TRACE"这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出。 -->
<configuration status="OFF">
	<appenders>
		<Console name="Console" target="SYSTEM_OUT">
		 	<!--过滤器:控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
		</Console>
		<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
        <File name="log" fileName="log/test.log" append="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
        </RollingFile>
	</appenders>
	<loggers>
		<!-- trace<debug<info<warn<error<fatal -->
		<!-- 默认的输出级别 -->
		<root level="trace">
			<appender-ref ref="log" />
		</root>
		<!-- 设置该类输出的级别为warn -->
		<!-- additivity开启的话,由于这个logger也是满足root的,所以会被打印两遍。 不过root logger 的level是error,为什么Bar 
			里面的trace信息也被打印两遍呢 -->
		<logger name="com.zzstxx.log4j2.HelloWorld2" level="warn"
			additivity="false">
			<appender-ref ref="Console" />
		</logger>
		<!-- 设置指定包目录下的输出级别 -->
		<!-- <logger name="com.zzstxx.log4j2" level="warn"
			additivity="false">
			<appender-ref ref="Console" />
		</logger>s -->
	</loggers>
</configuration>

转载至: 

http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html  

http://stackoverflow.com/questions/25081829/log4j2-jdbc-manager-cannot-connect-to-the-database

官方API :

http://logging.apache.org/log4j/2.x/manual/appenders.html#JDBCAppender

http://logging.apache.org/log4j/2.x/manual/thread-context.html

猜你喜欢

转载自zxf-noimp.iteye.com/blog/2268974