Logback日志配置

<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%-5level] [%class:%line] - %m%n</pattern>
        </encoder>
    </appender>

    <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${user.home}/logs/carrier/carrier.error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- each file should be at most 300MB, keep 30 days worth of history, but at most 30GB -->
            <maxFileSize>300MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>30GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${user.home}/logs/carrier/carrier.info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- each file should be at most 300MB, keep 30 days worth of history, but at most 30GB -->
            <maxFileSize>300MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>30GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <springProfile name="dev">
        <logger name="com.zto" level="DEBUG" additivity="false">
            <appender-ref ref="STDOUT" />
        </logger>
        <root level="INFO">
            <appender-ref ref="STDOUT" />
        </root>
    </springProfile>

    <springProfile name="test">
        <logger name="com.zto" level="DEBUG" additivity="false">
            <appender-ref ref="ERROR-OUT" />
            <appender-ref ref="INFO-OUT" />
        </logger>
        <root level="INFO">
            <appender-ref ref="INFO-OUT" />
        </root>
    </springProfile>

    <springProfile name="prod">
        <logger name="com.zto" level="DEBUG" additivity="false">
            <appender-ref ref="ERROR-OUT" />
            <appender-ref ref="INFO-OUT" />
        </logger>
        <root level="INFO">
            <appender-ref ref="INFO-OUT" />
        </root>
    </springProfile>

    <logger name="org.springframework.web" level="INFO"/>
</configuration>


异步日志:

application.properties:

logging.file=${user.home}/logs/consumer.log

logback-spring.xml:

<configuration>
	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
	<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}" />
	<include
			resource="org/springframework/boot/logging/logback/console-appender.xml" />
	<appender name="FILE"	class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>${FILE_LOG_PATTERN}</pattern>
		</encoder>
		<file>${LOG_FILE}</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- daily rollover -->
			<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>1</maxHistory>
		</rollingPolicy>
	</appender>
	<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<Pattern>${FILE_LOG_PATTERN}</Pattern>
		</encoder>
		<file>${user.home}/logs/consumer.error.log</file>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<!-- 按天来回滚,如果需要按小时来回滚,则设置为{yyyy-MM-dd_HH} -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${user.home}/logs/consumer.error.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 如果按天来回滚,则最大保存时间为maxHistory天,maxHistory天之前的都将被清理掉 -->
			<maxHistory>1</maxHistory>
		</rollingPolicy>
	</appender>
	<appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender">
		<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
		<discardingThreshold>0</discardingThreshold>
		<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
		<queueSize>10000</queueSize>
		<!-- 添加附加的appender,最多只能添加一个 -->
		<appender-ref ref="ERROR_FILE" />
	</appender>
	<appender name="RollingFileASYNC" class="ch.qos.logback.classic.AsyncAppender">
		<discardingThreshold>0</discardingThreshold>
		<queueSize>2048</queueSize>
		<appender-ref ref="FILE" />
	</appender>
	<root level="INFO">
		<appender-ref ref="RollingFileASYNC" />
		<appender-ref ref="ASYNC_ERROR_FILE" />
		<springProfile name="dev">
			<appender-ref ref="CONSOLE" />
		</springProfile>
	</root>
	<logger name="org.springframework.web" level="INFO" />
</configuration>

不同类输出不同日志:

private static final Logger log = LoggerFactory.getLogger("monitor");
     <appender name="file-monitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <Pattern>${FILE_LOG_PATTERN}</Pattern>
        </encoder>
        <file>${user.home}/logs/service.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${user.home}/logs/service.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
    </appender>
    <appender name="RollingFileASYNC-MONITOR" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>2048</queueSize>
        <appender-ref ref="file-monitor" />
    </appender>
    <logger name="monitor" additivity="false" level="INFO">
        <appender-ref ref="RollingFileASYNC-MONITOR"/>
    </logger>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值