springboot快速集成日志框架
1.在项目中引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
2.添加配置文件
RESOURCES目录下添加
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 文件输出格式 --> <property name="PATTERN" value="%-5level [%d{HH:mm:ss.SSS}] [%thread] %logger{36} - %M %L %msg%n" /> <property name="HTML_PATTERN" value="%-5level%d{HH:mm:ss.SSS}%thread%logger{36}%M%L%msg" /> <property name="LOG_PATH" value="/usr/local/mgsys/app" /> <property name="LOCAL_PATH" value="D:\\erp\\signLog" /> <!-- 测试环境+开发环境. 多个使用逗号隔开. --> <springProfile name="test,dev"> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>${PATTERN}</pattern> </encoder> </appender> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 根据是时间进行拆分--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 对日志进行压缩保存--> <fileNamePattern>${LOCAL_PATH}/info.%d{yyyy-MM-dd}.html.gz</fileNamePattern> <!-- 保存30个文件--> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 自定义输出处理器--> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" > <!-- 以html格式输出--> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>${HTML_PATTERN}</pattern> </layout> </encoder> <!-- 过滤 info文件中都是低于info的--> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印信息日志 --> <level>INFO</level> <!-- 高于info的放行--> <onMatch>ACCEPT</onMatch> <!-- 低于的拦截--> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 将自己程序的日志打印到文件中,继承root,同时打印到控制台中--> <logger name="com.erp.sign" level="INFO" > <appender-ref ref="INFO_FILE" /> </logger> <!-- 打印sql语句和返回值,到控制台--> <logger name="druid.sql" level="DEBUG" additivity="false" > <appender-ref ref="CONSOLE" /> </logger> <!-- 多有日志级别都为info 并且打印到控制台--> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </springProfile> <!-- 生产环境. --> <springProfile name="prod"> <!-- 滚动文件输出--> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 根据是时间进行拆分--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 对日志进行压缩保存--> <fileNamePattern>${LOCAL_PATH}/info.%d{yyyy-MM-dd}.html.gz</fileNamePattern> <!-- 保存30个文件--> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 自定义输出处理器--> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" > <!-- 以html格式输出--> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>${HTML_PATTERN}</pattern> </layout> </encoder> <!-- 过滤 info文件中都是低于info的--> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印信息日志 --> <level>INFO</level> <!-- 高于info的放行--> <onMatch>ACCEPT</onMatch> <!-- 低于的拦截--> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOCAL_PATH}/error.%d{yyyy-MM-dd}.html.gz</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" > <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>${HTML_PATTERN}</pattern> </layout> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOCAL_PATH}/warn.%d{yyyy-MM-dd}.html.gz</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" > <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>${HTML_PATTERN}</pattern> </layout> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 异步日志,相当于对INFO_FILE appender的装饰,将所有输出放到阻塞队列中--> <appender name="async" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="INFO_FILE"/> </appender> <root level="ERROR"> <appender-ref ref="ERROR_FILE" /> </root> <!-- 自定义logger additivity="false" 是否继承root 默认为true继承 目的是对单独模块的日志输出单独处理,additivity="false" 避免日志重复输出 --> <!-- appender 的filter级别是用在对同一个包下,级别不同输出到不同文件的处理 com.erp.sign 包下,所有的info之上的日志信息记录在info file中 warn级别的日志单独记录在warn file中 --> <logger name="com.erp.sign" level="INFO" additivity="false"> <appender-ref ref="async" /> <appender-ref ref="WARN_FILE" /> </logger> <!-- 如果需要对相同包下,不同级别的日志分别记录,就要添加appender 如果需要对不同包下的日志分别记录,就要添加自定义logger --> </springProfile> </configuration>
3.在配置文件中指定日志配置文件
logging.config=classpath:logback-spring.xml

浙公网安备 33010602011771号