Googler

两情相悦,又岂在朝朝暮暮。

spring 根据 profile 加载对应的 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" debug="false">
    <property name="log.dir" value="/usr/app-xiaofan"/>
    <logger name="org.rx.repository" level="DEBUG"/>
    <logger name="org.rx.bot.service.WxMobileBot" level="INFO"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <withJansi>true</withJansi>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c - %m%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/logs/${HOSTNAME}_info.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.dir}/logs/${HOSTNAME}_info.%d{yyyyMMdd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c - %m%n</pattern>
        </encoder>
    </appender>
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/logs/${HOSTNAME}_error.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.dir}/logs/${HOSTNAME}_error.%d{yyyyMMdd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c %m%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="INFO"/>
    <logger name="springfox.documentation" level="INFO"/>
    <logger name="org.hibernate.validator" level="INFO"/>
    <logger name="io.netty" level="INFO"/>
    <logger name="org.rx" level="DEBUG"/>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" debug="false">
    <property name="log.dir" value="/app-xiaofan/"/>
    <property name="appName" value="app-xiaofan"/>
    <property name="days" value="2"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c - %m%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/logs/${appName}_info.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.dir}/logs/${appName}_info.%d{yyyyMMdd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${days}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c - %m%n</pattern>
        </encoder>
    </appender>
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/logs/${appName}_error.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.dir}/logs/${appName}_error.%d{yyyyMMdd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${days}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c %m%n</pattern>
        </encoder>
    </appender>
    <appender name="jobAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/logs/${appName}_job.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.dir}/logs/${appName}_job.%d{yyyyMMdd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${days}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c - %m%n</pattern>
        </encoder>
    </appender>
    <appender name="mediaAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/logs/${appName}_media.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.dir}/logs/${appName}_media.%d{yyyyMMdd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${days}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>%d %-5p [%t] %c - %m%n</pattern>
        </encoder>
    </appender>
    <logger name="org.rx.repository" level="INFO" additivity="false">
        <appender-ref ref="mediaAppender"/>
    </logger>
    <logger name="org.rx.service.media.impl.JdMediaApi" level="INFO" additivity="false">
        <appender-ref ref="jobAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>
    <logger name="org.rx.service.media.MediaService" level="INFO" additivity="false">
        <appender-ref ref="mediaAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>
    <logger name="org.rx.beans.RandomList" level="DEBUG" additivity="false">
        <appender-ref ref="mediaAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </root>
</configuration>
<dependency>
            <groupId>org.logback-extensions</groupId>
            <artifactId>logback-ext-spring</artifactId>
            <version>0.1.5</version>
        </dependency>

package org.rx.common;

import ch.qos.logback.ext.spring.LogbackConfigurer;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.config.MethodInvokingFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

@Configuration
public class LogbackConfig {
    @Bean
    public MethodInvokingFactoryBean logbackConfigurer(Environment environment) {
        String currentProfile = getProfileFromEnvironment(environment);
        MethodInvokingFactoryBean factoryBean = new MethodInvokingFactoryBean();
        factoryBean.setTargetClass(LogbackConfigurer.class);
        factoryBean.setTargetMethod("initLogging");
        factoryBean.setArguments(String.format("classpath:logback-%s.xml", currentProfile));
        return factoryBean;
    }

    private String getProfileFromEnvironment(Environment environment) {
        String[] profiles = environment.getActiveProfiles();
        if (!ArrayUtils.isEmpty(profiles)) {
            return profiles[0];
        }
        profiles = environment.getDefaultProfiles();
        if (!ArrayUtils.isEmpty(profiles)) {
            return profiles[0];
        }
        throw new IllegalStateException("Must specify a spring profile in the environment!");
    }
}

 

posted on 2020-12-06 22:02  RockyLOMO  阅读(457)  评论(0)    收藏  举报

导航

Apple/苹果笔记本 Mac Air MC968CH/A 行货在保 I5 11寸 超级本