Java 项目 服务器 日志配置

最近 在搞一个0-1的项目 就想把 服务器日志配置 记录一下

我们使用的是 单体微服务项目

首先你需要一个xml

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!--定义日志存放的位置-->
    <springProperty scope="context" name="logPath" source="log.path" defaultValue="logs"/>
    <springProperty scope="context" name="logMaxFileSize" source="log.maxFileSize" defaultValue="50MB"/>
    <springProperty scope="context" name="logMaxHistory" source="log.maxHistory" defaultValue="45"/>
    <springProperty scope="context" name="totalLogSizeCap" source="log.totalLogSizeCap" defaultValue="20GB"/>
    <springProperty scope="context" name="errorLogSizeCap" source="log.errorLogSizeCap" defaultValue="5GB"/>

    <!-- ****************************************************************************************** -->
    <!-- ****************************** dev,uat环境在控制台打印日志 ************************************ -->
    <!-- ****************************************************************************************** -->
    <springProfile name="dev | uat | ksh | ysh">

        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger Line:%-3L - %msg%n</pattern>
                    <!--<charset>utf-8</charset>-->
                </layout>
            </encoder>
        </appender>

        <root level="info">
            <appender-ref ref="STDOUT"/>
        </root>

    </springProfile>

    <!-- ****************************************************************************************** -->
    <!-- ********************** 非dev环境日志记录在文件 **************************** -->
    <!-- ****************************************************************************************** -->
    <!-- 日志记录器,日期滚动记录 -->
    <springProfile name="dev">
        <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${logPath}/log_error.log</file>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 归档的日志文件的路径,例如今天是2018-11-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
                而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
                <fileNamePattern>${logPath}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 除按日志记录之外,还配置了日志文件不能超过50MB,若超过50MB,日志文件会以索引0开始,
                命名日志文件,例如log-error-2018-11-21.0.log -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${logMaxFileSize}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>${logMaxHistory}</maxHistory>
                <totalSizeCap>${errorLogSizeCap}</totalSizeCap>
                <cleanHistoryOnStart>true</cleanHistoryOnStart>
            </rollingPolicy>
            <!-- 追加方式记录日志 -->
            <append>true</append>
            <!-- 日志文件的格式 -->
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger Line:%-3L - %msg%n</pattern>
                    <!--<charset>utf-8</charset>-->
                </layout>
            </encoder>
            <!-- 此日志文件只记录error级别的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>error</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>

        <!-- 日志记录器,日期滚动记录 -->
        <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${logPath}/log_total.log</file>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
                而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
                <fileNamePattern>${logPath}/total/log-total-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 除按日志记录之外,还配置了日志文件不能超过50MB,若超过50MB,日志文件会以索引0开始,
                命名日志文件,例如log-error-2013-12-21.0.log -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${logMaxFileSize}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>${logMaxHistory}</maxHistory>
                <totalSizeCap>${totalLogSizeCap}</totalSizeCap>
                <cleanHistoryOnStart>true</cleanHistoryOnStart>
            </rollingPolicy>
            <!-- 追加方式记录日志 -->
            <append>true</append>
            <!-- 日志文件的格式 -->
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger Line:%-3L - %msg%n</pattern>
                    <!--<charset>utf-8</charset>-->
                </layout>
            </encoder>
        </appender>

        <root level="info">
            <appender-ref ref="FILE_ERROR"/>
            <appender-ref ref="FILE_ALL"/>
        </root>
    </springProfile>

</configuration>

然后就是 pom文件里面添加上对应的依赖

XML 复制代码
 <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-simple</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-nop</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>

然后 yml 里面

复制代码
logging.config=classpath:logback-spring.xml
logging.level.root=info
logging.level.com=debug
logging.level.org.springframework.boot=ERROR

log.path=/Users/meiyifan/code/logs
log.maxFileSize=50MB
log.maxHistory=45

log.totalLogSizeCap=20GB
log.errorLogSizeCap=5GB
systemLog.enable=true
systemLogretentiondays=30

然后再服务器对应的创建 存储日志的文件 logs

相关推荐
hopetomorrow9 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
mengao123410 分钟前
centos 服务器 docker 使用代理
服务器·docker·centos
不是二师兄的八戒19 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
小牛itbull19 分钟前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
C-cat.19 分钟前
Linux|进程程序替换
linux·服务器·microsoft
怀澈12221 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
学Linux的语莫25 分钟前
Ansible Playbook剧本用法
linux·服务器·云计算·ansible
请叫我欧皇i28 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
闲暇部落30 分钟前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
爱编程的小生31 分钟前
Easyexcel(2-文件读取)
java·excel