//lib log4j-core-xx.jar log4j-api-xx.jar
package com.ztao2333.spring; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class HelloTest { @Test public void testHelloWorld() { Logger logger = LogManager.getLogger(HelloTest.class.getName()); logger.trace("trace level"); logger.debug("debug level"); logger.info("info level"); logger.warn("warn level"); logger.error("error level"); logger.fatal("fatal level"); //1、读取配置文件实例化一个IoC容器 //用classpath路径 默认classpath是src文件夹 ApplicationContext context = new ClassPathXmlApplicationContext("helloWorld.xml"); //用文件系统的路径,默认指项目的根路径 //ApplicationContext context = new FileSystemXmlApplicationContext("src/helloWorld.xml"); //2、从容器中获取Bean,注意此处完全“面向接口编程,而不是面向实现” HelloAPI helloApi = context.getBean("hello", HelloAPI.class); //3、执行业务逻辑 helloApi.sayHello(); } }
//在src下新建log4j2.xml (src下路径为classpath路径) <?xml version="1.0" encoding="utf-8"?> <configuration status="OFF"> <appenders> <!-- 利用ThresholdFilter对name为 Console log RollingFile分别设置log level--> <Console name="Console" target="SYSTEM_OUT"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%5p:%d{yyyy-MM-dd HH:mm:ss.SSS}[%M] %m %n"/> </Console> <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--> <File name="log" fileName="D:\test.log" append="false"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFile" fileName="d:\app.log" filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <ThresholdFilter level="debug" 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="1MB"/> </RollingFile> </appenders> <loggers> <!--我们只让这个logger输出info信息,其他的都是error级别 additivity开启的话,由于这个logger也是满足root的,所以会被打印两遍。 additivity为false,这个logger打印一遍。 对于特定类的log level设置 --> <!-- <logger name="com.ztao2333.spring.HelloTest" level="info" additivity="false"> <appender-ref ref="Console"/> </logger> --> <!-- log TRACE < DEBUG < INFO < WARN < ERROR < FATAL --> <root level="debug"> <appender-ref ref="Console"/> <appender-ref ref="log"/> <appender-ref ref="RollingFile"/> </root> </loggers> </configuration>
学习: http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html