logback.xml

这个配置可以按天生成日志文件

logback.properties (自定义的外部配置文件,就是设置文件的输出路径)

logback.dir=/home/bigdata/shishishell/logdata
logback.all.filename=/logs/loanms-all
logback.info.filename=/app
logback.debug.filename=/logs/loanms-debug
logback.warn.filename=/logs/loanms-warn
logback.error.filename=/logs/loanms-error
logback.maxhistory=60
logback.level=info
logback.charset=UTF-8

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
    <property resource="logback.properties"/>

    <appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <Prudent>true</Prudent>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>
                ${logback.dir}/${logback.info.filename}.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!-- keep ${logback.maxhistory} days worth of history -->
            <MaxHistory>${logback.maxhistory}</MaxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

<!--    下面注解掉的都是标准格式-->


<!--    <appender name="file-all" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <Prudent>true</Prudent>-->
<!--        <rollingPolicy-->
<!--                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--            <FileNamePattern>-->
<!--                ${logback.dir}/${logback.all.filename}.%d{yyyy-MM-dd}.log-->
<!--            </FileNamePattern>-->
<!--            &lt;!&ndash; keep ${logback.maxhistory} days worth of history &ndash;&gt;-->
<!--            <MaxHistory>${logback.maxhistory}</MaxHistory>-->
<!--        </rollingPolicy>-->
<!--        <layout class="ch.qos.logback.classic.PatternLayout">-->
<!--            <Pattern>-->
<!--                %d{yyyy-MM-dd HH:mm:ss} -%msg%n-->
<!--            </Pattern>-->
<!--        </layout>-->
<!--        <encoder>-->
<!--            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->
<!--    <appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--            <level>INFO</level>-->
<!--            <onMatch>ACCEPT</onMatch>-->
<!--            <onMismatch>DENY</onMismatch>-->
<!--        </filter>-->
<!--        <Prudent>true</Prudent>-->
<!--        <rollingPolicy-->
<!--                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--            <FileNamePattern>-->
<!--                ${logback.dir}/${logback.info.filename}.%d{yyyy-MM-dd}.log-->
<!--            </FileNamePattern>-->
<!--            &lt;!&ndash; keep ${logback.maxhistory} days worth of history &ndash;&gt;-->
<!--            <MaxHistory>${logback.maxhistory}</MaxHistory>-->
<!--        </rollingPolicy>-->
<!--        <layout class="ch.qos.logback.classic.PatternLayout">-->
<!--            <Pattern>-->
<!--                %d{yyyy-MM-dd HH:mm:ss} -%msg%n-->
<!--            </Pattern>-->
<!--        </layout>-->
<!--        <encoder>-->
<!--            &lt;!&ndash;<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c{0}] %m%n</pattern>&ndash;&gt;-->
<!--            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->
<!--    <appender name="file-warn" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--            <level>WARN</level>-->
<!--            <onMatch>ACCEPT</onMatch>-->
<!--            <onMismatch>DENY </onMismatch>-->
<!--        </filter>-->
<!--        <Prudent>true</Prudent>-->
<!--        <rollingPolicy-->
<!--                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--            <FileNamePattern>-->
<!--                ${logback.dir}/${logback.warn.filename}.%d{yyyy-MM-dd}.log-->
<!--            </FileNamePattern>-->
<!--            &lt;!&ndash; keep ${logback.maxhistory} days worth of history &ndash;&gt;-->
<!--            <MaxHistory>${logback.maxhistory}</MaxHistory>-->
<!--        </rollingPolicy>-->
<!--        <layout class="ch.qos.logback.classic.PatternLayout">-->
<!--            <Pattern>-->
<!--                %d{yyyy-MM-dd HH:mm:ss} -%msg%n-->
<!--            </Pattern>-->
<!--        </layout>-->
<!--        <encoder>-->
<!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c{0}] %m%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->
<!--    <appender name="file-error"-->
<!--              class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <Prudent>true</Prudent>-->
<!--        <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.TimeBasedRollingPolicy">-->
<!--            <FileNamePattern>-->
<!--                ${logback.dir}/${logback.error.filename}.%d{yyyy-MM-dd}.log-->
<!--            </FileNamePattern>-->
<!--            &lt;!&ndash; keep ${logback.maxhistory} days worth of history &ndash;&gt;-->
<!--            <MaxHistory>${logback.maxhistory}</MaxHistory>-->
<!--        </rollingPolicy>-->
<!--        <layout class="ch.qos.logback.classic.PatternLayout">-->
<!--            <Pattern>-->
<!--                %d{yyyy-MM-dd HH:mm:ss} -%msg%n-->
<!--            </Pattern>-->
<!--        </layout>-->
<!--        <encoder>-->
<!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c{0}] %m%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->
<!--    <appender name="file-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--            <level>DEBUG</level>-->
<!--            <onMatch>ACCEPT</onMatch>-->
<!--            <onMismatch>DENY </onMismatch>-->
<!--        </filter>-->
<!--        <Prudent>true</Prudent>-->
<!--        <rollingPolicy-->
<!--                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--            <FileNamePattern>-->
<!--                ${logback.dir}/${logback.debug.filename}.%d{yyyy-MM-dd}.log-->
<!--            </FileNamePattern>-->
<!--            &lt;!&ndash; keep ${logback.maxhistory} days worth of history &ndash;&gt;-->
<!--            <MaxHistory>${logback.maxhistory}</MaxHistory>-->
<!--        </rollingPolicy>-->
<!--        <layout class="ch.qos.logback.classic.PatternLayout">-->
<!--            <Pattern>-->
<!--                %d{yyyy-MM-dd HH:mm:ss} -%msg%n-->
<!--            </Pattern>-->
<!--        </layout>-->
<!--        <encoder>-->
<!--            &lt;!&ndash;<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c{0}] %m%n</pattern>&ndash;&gt;-->
<!--            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->
<!--    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">-->
<!--        <encoder>-->
<!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c{0}] %m%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->

    <!-- 指定一个类下面的log方法信息设置-->
    <logger name="com.example.rizhi.controller.LogController"
            level="INFO" additivity="true">
        <!--       appender-ref对应上面声明的日志输出形式 appender-->
<!--        这里的file-info表示启动info格式日志的输出-->
        <appender-ref ref="file-info" />
        <appender-ref ref="console" />
    </logger>

<!--    这里表示所有日志格式设置additivity为true表示文件追加的形式,如果为false就是覆盖-->
    <root>
        <level value="error"  additivity="true"/>
<!--        <appender-ref ref="file-all" />-->
<!--        这里需要分开使用的时候再配置,这里的appender-ref就是引用上面的配置-->
<!--        <appender-ref ref="file-info" />-->
<!--        <appender-ref ref="file-debug" />-->
<!--        <appender-ref ref="file-warn" />-->
<!--        <appender-ref ref="file-error" />-->
        <appender-ref ref="console" />
    </root>

</configuration>

配置文件放置位置示例

日志打印示例

@Slf4j
log.info(logg);

springboot打包插件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>rizhi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>rizhi</name>
    <description>rizhi</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐