SpringBoot使用logback
可在配置文件里配置logback的配置文件的位置:
logging:
#./可忽略
config: config/logback-spring.xml
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 定义参数,后面可以通过${APP_NAME}使用 -->
<property name="APP_NAME" value="sample"/>
<!-- ../logs日志文件会生成在项目的外面的一个文件夹下 -->
<!-- ./logs日志文件会生成在项目中的logs文件夹一个文件夹 -->
<property name="LOG_PATH" value="./logs"/>
<property name="LOG_FILE" value="${LOG_PATH}/spring.log"/>
<property name="COLA_LOG_FILE" value="${LOG_PATH}/cola.log"/>
<property name="LOG_PATTERN" value="%-4relative [%thread] %-5level %logger{35}[%line] - %msg%n"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 定义日志输出的路径-->
<file>${LOG_FILE}</file>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 当前运行的日志文件名从${LOG_FILE}读取,日志文件名为 application.log -->
<!-- 第二天运行就会把昨天得日志文件名称,修改成 application.log.yyyy-MM-dd.log -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>50MB</maxFileSize>
<!-- 达到这个大小后,旧的文件日志将会被异步删除-->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="COLA_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 定义日志输出的路径-->
<file>${COLA_LOG_FILE}</file>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 当前运行的日志文件名从${LOG_FILE}读取,日志文件名为 application.log -->
<!-- 第二天运行就会把昨天得日志文件名称,修改成 application.log.yyyy-MM-dd.log -->
<fileNamePattern>${COLA_LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>50MB</maxFileSize>
<!-- 达到这个大小后,旧的文件日志将会被异步删除-->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 文件输出到控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!--rootLogger是默认的logger-->
<root level="INFO">
<!--定义了两个appender,日志会通过往这两个appender里面写-->
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
<!--应用日志-->
<!--这个logger没有指定appender,它会继承root节点中定义的那些appender-->
<!--additivity表示要不要使用rootLogger配置的appender进行输出-->
<springProfile name="dev"><!-- dev分支生效-->
<logger name="com.alibaba.cola.sample.controller" level="DEBUG" additivity="false">
<appender-ref ref="COLA_FILE"/>
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<logger name="com.alibaba.sample" level="DEBUG"/>
<logger name="com.alibaba.cola.file" level="DEBUG"/>
<logger name="com.alibaba.cola.report" level="DEBUG"/>
<logger name="com.alibaba.cola.dictionary" level="DEBUG"/>
<logger name="com.alibaba.cola.logging" level="DEBUG"/>
<logger name="com.alibaba.cola.systemlog" level="DEBUG"/>
<logger name="com.alibaba.cola.property" level="DEBUG"/>
<!--数据库日志-->
<!--由于这个logger自动继承了root的appender,root中已经有stdout的appender了,自己这边又引入了stdout的appender-->
<!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
<!--additivity表示要不要使用rootLogger配置的appender进行输出-->
<logger name="com.apache.ibatis" level="TRACE" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</configuration>