springcloud动态配置不同环境logback日志 配置
1、首先在bootstrap.yml文件添加如下配置:logging.config: classpath:logback-spring.xml//配置各个环境使用的log配置文件logback.path: /home/work/logs//配置相应的环境log打印路径2、不同环境动态配置日志路径和级别动态配置日志打印路径:使用springProperty属性,source配置对应的yml文件的配置
·
1、首先在bootstrap.yml文件添加如下配置:
logging.config: classpath:logback-spring.xml //配置各个环境使用的log配置文件
logback.path: /home/work/logs //配置相应的环境log打印路径
2、不同环境动态配置日志路径和级别
动态配置日志打印路径:使用springProperty属性,source配置对应的yml文件的配置
<springProperty scope="context" name="LOG_HOME" source="logback.path"/>
日志打印级别配置:
<springProfile name="test">
</springProfile>
3、logback-spring.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<springProperty scope="context" name="LOG_HOME" source="logback.path"/>
<property name="CONSOLE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} | %5p | ${PID:- } | %X{traceId:--} | %t | %-40.40logger{39} : %m%n"/>
<property name="FILE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} | %5p | ${PID:- } | %X{traceId:--} | %t | %-40.40logger{39} : %m%n"/>
<!--输出到控制台 ConsoleAppender-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--展示格式 layout-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</appender>
<!--错误日志-->
<appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/stdout-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/stdout-error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>5120MB</maxFileSize>
<MaxHistory>5</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--info日志-->
<appender name="infoFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/stdout-info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/stdout-info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>5120MB</maxFileSize>
<MaxHistory>5</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印info日志 -->
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 -->
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 异步输出 -->
<appender name="ASYNCINFO" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>5120</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="infoFile"/>
</appender>
<!--debug日志-->
<appender name="debugFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/stdout-debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/stdout-debug-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>5120MB</maxFileSize>
<MaxHistory>5</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印info日志 -->
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 心跳日志(HAProxy 检测应用状态日志)输出到单独文件 -->
<appender name="HEARTBEAT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/stdout-heartbeat.log</File>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/stdout-heartbeat.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%message:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %message%n</pattern>
</encoder>
</appender>
<logger name="HEARTBEAT_LOGGER" additivity="false" level="INFO">
<appender-ref ref="HEARTBEAT_APPENDER"/>
</logger>
<springProfile name="local">
<!-- sql打印 配置项目中mapper层的包路径 等级为debug级别-->
<logger name="cn.com.dao" level="debug"></logger>
<!-- sql打印 -->
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="debugFile"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="errorFile"/>
<appender-ref ref="ASYNCINFO"/>
</root>
</springProfile>
<springProfile name="test">
<!-- sql打印 配置项目中mapper层的包路径-->
<logger name="xxx.dao" level="debug"></logger>
<!-- sql打印 -->
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="debugFile"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="errorFile"/>
<appender-ref ref="ASYNCINFO"/>
</root>
</springProfile>
<springProfile name="test1">
<!-- sql打印 配置项目中mapper层的包路径-->
<logger name="xxx.client" level="debug"></logger>
<!-- sql打印 -->
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="debugFile"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="errorFile"/>
<appender-ref ref="ASYNCINFO"/>
</root>
</springProfile>
<springProfile name="uat">
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="debugFile"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="errorFile"/>
<appender-ref ref="ASYNCINFO"/>
</root>
</springProfile>
<springProfile name="prod">
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="debugFile"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="errorFile"/>
<appender-ref ref="ASYNCINFO"/>
</root>
</springProfile>
</configuration>
更多推荐
已为社区贡献1条内容
所有评论(0)