logback springmvc 把日志输出到指定文件中所遇到的小坑

来源:互联网 发布:idea关联源码 编辑:程序博客网 时间:2024/06/02 05:32

百度网上的很多都是你抄我,我抄你,就几个版本,仍然没有解决问题,废话不多说,我直接上代码:

pom.xml 


<logback.version>1.2.2</logback.version>

<logback-ext-spring.version>0.1.4</logback-ext-spring.version>


 <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>

 <!-- 需要把日志输入到文件才需要这个jar,否则tomcat启动时加载web.xml配置文件时,会因为找不到LogbackConfigListener报错,如果只把日志输入到控制台则不需要,也不需要-在web.xml文件中加载LogbackConfigListener->

     <dependency>
   <groupId>org.logback-extensions</groupId>
   <artifactId>logback-ext-spring</artifactId>
     <version>0.1.4</version>
</dependency>


web.xml 

 <context-param>
   <param-name>logbackConfigLocation</param-name>
   <param-value>classpath:META-INF/configuration/logback.xml</param-value>
 </context-param>

<!-- 第一个坑,不写下面的这个listener 不管是配置绝对路径还是相对路径,文件都不会输出-->

  <listener>  
    <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>  
</listener> 



logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
    <property resource="META-INF/configuration/environment/application.properties"></property>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder
            by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level [%logger{120}.%method \(%line\)] - %msg%n</pattern>
        </encoder>
    </appender>
    
    
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/a.log</file>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/a.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>

<encoder>
<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>


    <root level="${cas.log.level}">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="rollingFile" />
    </root>


    <logger name="org.springframework" level="ERROR" addtivity="false" >
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="rollingFile" />
    </logger>


    <logger name="org.thymeleaf" level="ERROR" addtivity="false" >
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="rollingFile" />
    </logger>


    <logger name="springfox" level="ERROR" addtivity="false" >
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="rollingFile" />
    </logger>


    <logger name="org.mybatis" level="ERROR" addtivity="false" >
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="rollingFile" />
    </logger>


    <logger name="org.hibernate" level="ERROR" addtivity="false" >
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="rollingFile" />
    </logger>


    <logger name="org.apache" level="ERROR" addtivity="false" >
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="rollingFile" />
    </logger>
<logger name="java.sql" level="DEBUG" /> 


</configuration>



application.properties

log.level=INFO
log.sql.level=INFO

#如果是eclipse 部署,且是相对路径那么会在你的eclipse 安装目录下面生成相关日志文件夹

#绝对路径也可以 

log.path=log/tomcat/testLog

#log.path=d:/log/tomcat/testLog


第二个坑就是网上所说的不要使用logback 1.0.2及之前的版本,日志输入貌似(因为本人没有使用过,只是在国内外的几个技术论坛中都提及到这点)是个bug


阅读全文
1 0
原创粉丝点击