您的位置:首页 > 编程语言 > Java开发

springmvc 加入log4j2日志

2017-08-02 12:25 429 查看
这次记录下springmvc加入log4j2的日志。

1.在pom文件中加入log4j2相关的依赖

<!-- log4j2   -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.1</version>
</dependency>


2.在web.xml文件中添加Log4j2的相关配置信息

<!--    log4j2   -->
<context-param>
<param-name>isLog4jAutoInitializationDisabled</param-name>
<param-value>false</param-value>
</context-param>
<!-- 默认就会找这个文件,不需要额外配置引用
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:/log4j2.xml</param-value>
</context-param>
-->
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>

<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log4jServletFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>


3.在resources下加入log4j2.xml.给出我的仅供参考

<?xml version="1.0" encoding="UTF-8"?>

<!--
status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。
-->
<Configuration status="WARN" monitorInterval="30">
<!--
日志级别
共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
-->
<!-- 配置日志文件输出目录 -->
<Properties>
<Property name="patternLayout">[%d{yyyy-MM-dd'T'HH:mm:ss,SSSXXX}] %-5p [%t] %c{2} - %m%n]</Property>
<!--<Property name="logdir">${sys:catalina.home}</Property>-->
<Property name="logdir">D:/tmp</Property>
<!--<Property name="logdir">/usr/local/apache-tomcat-8.0.30/logs</Property>-->
<!--<Property name="logdir">/data/tomcat8/logs</Property>-->
</Properties>
<Appenders>
<!--这个输出控制台的配置-->
<Console name="CONSOLE" target="SYSTEM_OUT">
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出日志的格式 -->
<PatternLayout pattern="${patternLayout}"/>
</Console>
<Async name="ASYNC">
<AppenderRef ref="CONSOLE"/>
</Async>

<!--<RollingFile name="DebugLogger" fileName="${logdir}/logs/debug/log.log"
filePattern="${logdir}/logs/debug/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-log-%i.log" append="true">-->
<!--
name 和root 里面定义的相对应
append 决定是否在原日志末尾追加日志。调试的时候可以设置为false,很方便

-->
<RollingFile name="DebugLogger" fileName="${logdir}/logs/debug/log.log"
filePattern="${logdir}/logs/debug/log-%i.log" append="true">
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${patternLayout}"/>
<!--<SizeBasedTriggeringPolicy size="1MB"/>-->
<DefaultRolloverStrategy max="10"/>
<Policies>
<!--根据时间来滚动-->
<!--<TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->

<!--根据文件大小来滚动-->
<SizeBasedTriggeringPolicy size="20 MB"/>
</Policies>
</RollingFile>

<RollingFile name="InfoLogger" fileName="${logdir}/logs/info/log.log"
filePattern="${logdir}/logs/info/log-%i.log" append="true">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${patternLayout}"/>
<!--<SizeBasedTriggeringPolicy size="1MB"/>-->
<DefaultRolloverStrategy max="10"/>
<Policies>
<!--根据时间来滚动-->
<!--<TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->

<!--根据文件大小来滚动-->
<SizeBasedTriggeringPolicy size="20 MB"/>
</Policies>
</RollingFile>

<RollingFile name="WarnLogger" fileName="${logdir}/logs/warn/log.log"
filePattern="${logdir}/logs/warn/log-%i.log" append="true">
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${patternLayout}"/>
<!--<SizeBasedTriggeringPolicy size="1MB"/>-->
<DefaultRolloverStrategy max="10"/>
<Policies>
<!--根据时间来滚动-->
<!--<TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->

<!--根据文件大小来滚动-->
<SizeBasedTriggeringPolicy size="20 MB"/>
</Policies>
</RollingFile>

<RollingFile name="ErrorLogger" fileName="${logdir}/logs/error/log.log"
filePattern="${logdir}/logs/error/log-%i.log" append="true">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${patternLayout}"/>
<!--<SizeBasedTriggeringPolicy size="1MB"/>-->
<DefaultRolloverStrategy max="10"/>
<Policies>
<!--根据时间来滚动-->
<!--<TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->

<!--根据文件大小来滚动-->
<SizeBasedTriggeringPolicy size="20 MB"/>
</Policies>
</RollingFile>

<!--<RollingFile name="importDataLog" fileName="${logdir}/logs/importData/log.log"-->
<!--filePattern="${logdir}/logs/importData/log-%i.log" append="true">-->
<!--<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>-->
<!--<PatternLayout pattern="${patternLayout}"/>-->
<!--<!–<SizeBasedTriggeringPolicy size="1MB"/>–>-->
<!--<DefaultRolloverStrategy max="10"/>-->
<!--<Policies>-->
<!--<!–根据时间来滚动–>-->
<!--<!–<TimeBasedTriggeringPolicy modulate="true" interval="1"/>–>-->

<!--<!–根据文件大小来滚动–>-->
<!--<SizeBasedTriggeringPolicy size="20 MB"/>-->
<!--</Policies>-->
<!--</RollingFile>-->

<!--<appender name="importDataLog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="encoding" value="UTF-8" />
<param name="File" value="${logdir}/logs/importData/log.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="${patternLayout}" />
</layout>
</appender>-->
</Appenders>
<loggers>

<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.springframework" level="INFO"></logger>
<!--<logger name="org.mybatis" level="INFO"></logger>-->
<!--   设置日志输出级别   -->
<root level="debug">
<AppenderRef ref="ASYNC"/>
<appender-ref ref="DebugLogger"/>
<appender-ref ref="InfoLogger"/>
<appender-ref ref="WarnLogger"/>
<appender-ref ref="ErrorLogger"/>
</root>

<!--<logger name="yu" level="info" additivity="false">-->
<!--<appender-ref ref="importDataLog"/>-->
<!--</logger>-->
<!--<logger name="com.inter3i.sun.api.ota.v1.job.schedule.SegmenteJob" level="info" additivity="false">-->
<!--<appender-ref ref="importDataLog"/>-->
<!--</logger>-->
<!--<logger name="com.inter3i.sun.api.ota.v1.job.ImportDataAdapter" level="info" additivity="false">-->
<!--<appender-ref ref="importDataLog"/>-->
<!--</logger>-->
<!--<logger name="com.inter3i.sun.api.ota.v1.job.SegmentAdapter" level="info" additivity="false">-->
<!--<appender-ref ref="importDataLog"/>-->
<!--</logger>-->
</loggers>
</Configuration>


4.用LogManager.getLogger()获取到log对象,然后打印日志就ok了

@Controller
@RequestMapping("test")
public class TestController {
private  static final  Logger logger = LogManager.getLogger(TestController.class);
@RequestMapping("index")
@ResponseBody
public String test(){
logger.info("a info data");
logger.debug("a debug data");
logger.error("a error data");
return "index";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  log4j2 spring mvc