springmvc 加入log4j2日志

来源:互联网 发布:迪杰斯特拉算法流程 编辑:程序博客网 时间:2024/05/14 22:43

这次记录下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}"/>-->        <!--&lt;!&ndash;<SizeBasedTriggeringPolicy size="1MB"/>&ndash;&gt;-->        <!--<DefaultRolloverStrategy max="10"/>-->        <!--<Policies>-->        <!--&lt;!&ndash;根据时间来滚动&ndash;&gt;-->        <!--&lt;!&ndash;<TimeBasedTriggeringPolicy modulate="true" interval="1"/>&ndash;&gt;-->        <!--&lt;!&ndash;根据文件大小来滚动&ndash;&gt;-->        <!--<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";    }}
原创粉丝点击