springBoot 整合log4j2

来源:互联网 发布:顺治 多尔衮 知乎 编辑:程序博客网 时间:2024/05/16 06:10

因为项目中之前没有引入日志插件,所以我就加了一下。
我是看着这篇博客装的,其中也进行了一些修改。十分感谢

  1. 取出springBoot自带的默认日志控件,添加log4j2日志控件
    pom文件中添加一下代码

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>1.4.2.RELEASE</version><exclusions><!--   去掉默认配置   -->    <exclusion>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-logging</artifactId>    </exclusion></exclusions></dependency><dependency> <!-- 引入log4j2依赖 &ndash;&gt;-->    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-log4j2</artifactId>    <version>1.4.2.RELEASE</version></dependency>

2.在application.properties文件夹下,添加日志配置

logging.config=classpath:log4j2.xml

3.在src/main/resource下新建log4j2.xml,加入对应的配置。(这个参照其他的就OK了)

<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN" monitorInterval="30">    <Properties>        <Property name="patternLayout">[%d{yyyy-MM-dd'T'HH:mm:ss,SSSXXX}] %-5p [%t] %c{2} - %m%n</Property>        <Property name="logdir">D:/tmp/</Property>    </Properties>    <Appenders> //这是定义consle输出的        <Console name="CONSOLE" target="SYSTEM_OUT">            <PatternLayout pattern="${patternLayout}"/>        </Console>        <Async name="ASYNC">            <AppenderRef ref="CONSOLE"/>        </Async> //RollingFileAppender,循环写入文件。达到设置的大小,就把格式变成filePattern定义的    //定义debug的输出形式,循环写成文件    <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">        <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>        <PatternLayout pattern="${patternLayout}"/>        <!--<SizeBasedTriggeringPolicy size="1MB"/>-->        <DefaultRolloverStrategy max="10"/>        <Policies>            <!--根据时间来滚动-->            <!--<TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->            <!--根据文件大小来滚动-->            <SizeBasedTriggeringPolicy size="10 MB"/>        </Policies>    </RollingFile>    <RollingFile name="InfoLogger" fileName="${logdir}/logs/info/log.log"                 filePattern="${logdir}/logs/info/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-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="10 MB"/>        </Policies>    </RollingFile>    <!--add   by  yu-->    <RollingFile name="importDataLog" fileName="${logdir}/logs/priceMonitor/log.log"                 filePattern="${logdir}/logs/priceMonitor/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>    <!--end-->    <RollingFile name="WarnLogger" fileName="${logdir}/logs/warn/log.log"                 filePattern="${logdir}/logs/warn/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-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="10 MB"/>        </Policies>    </RollingFile>    <RollingFile name="ErrorLogger" fileName="${logdir}/logs/error/log.log"                 filePattern="${logdir}/logs/error/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-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="10 MB"/>        </Policies>    </RollingFile></Appenders><loggers>    <root level="info">        <AppenderRef ref="ASYNC"/>        <appender-ref ref="DebugLogger"/>        <appender-ref ref="InfoLogger"/>        <appender-ref ref="WarnLogger"/>        <appender-ref ref="ErrorLogger"/>    </root>    <logger name="com.inter3i.monitor.component.ScheduleJob" level="info" additivity="false">        <appender-ref ref="importDataLog"/>    </logger>    <logger name="com.inter3i.monitor.business.impl.PriceTrendServicelmpl" level="info" additivity="false">        <appender-ref ref="importDataLog"/>    </logger>    <logger name="com.inter3i.monitor.business.impl.PriceChangeRankServiceImpl" level="info" additivity="false">        <appender-ref ref="importDataLog"/>    </logger>    //如果同时满足这个和上面的,additivity属性是否重复输出。    //appender-ref ref指定上面定义的name     <logger name="com.inter3i.monitor.business.impl.BrandAvgChangeServiceImpl" level="debug" additivity="false">        <appender-ref ref="importDataLog"/>    </logger></loggers>

4.程序里面直接引入

    private static final Logger logger = LoggerFactory.getLogger(ScheduleJob.class);     方法里面用这个就ok了。    logger.info("this is info ");

5.java的配置真是烦人。