Springboot+logback+k8s实现将日志挂载到指定服务器上

一、Springboot中的logback配置:

由于springboot默认集成的就是logback,所以,我们也不需要另外再引入什么依赖;

1、在 src/resources 目录下准备好logback的核心配置文件:logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路径 -->
    <property name="log.path" value="${logging.path:-${java.io.tmpdir}/logs}"/>
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - [%method,%line] - %msg%n"/>
    <!-- 获取主机名 -->
    <property name="hostname" value="${hostname}"/>
    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- CRM系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/${hostname}-info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/%d{yyyy-MM-dd,aux}/${hostname}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <logger name="com.isales" level="info" additivity="false">
        <appender-ref ref="console"/><!-- 输出到控制台  -->
        <appender-ref ref="file_info"/><!-- 输出到日志文件  -->
    </logger>
    <!-- 顶层包日志输出配置 即默认配置 -->
    <root level="info">
        <appender-ref ref="console"/><!-- 输出到控制台  -->
        <appender-ref ref="file_info"/><!-- 输出到日志文件  -->
    </root>
</configuration>

2、在springboot的核心配置文件中做以下配置:

logging:
  config: classpath:logback.xml
  level:
    root: ${LOGGING_LEVEL:info}
    com.isales: ${LOGGING_LEVEL:info}

注:我们用到了一个内置的变量:${java.io.tmpdir},此变量在Windows和Linux的默认值是不一样的,分别对应如下:

  • Windows:C:\Users\登录用户~1\AppData\Local\Temp\

  • Linux:/tmp

至于项目如何打包,构建镜像,发布k8s就不是这里该介绍的内容了!


二、在k8s上为对应的服务配置pvc

1、创建pvc:

1724305010998860.png

2、挂载log日志文件:1724305136182388.png

以上截图为Rancher上面的操作截图!


三、在需要的服务器上,挂载网路nfs目录

1、创建目录文件夹:

mkdir isales-crm-prod-logs

2、mount挂载网络文件:

172.18.52.200:/pvc_d6f0277b_01c1_4770_a749_a732e3b5f8b4 /root/isales-crm-prod-logs

3、日志从k8s中挂载到服务器中的操作就完成了:

[root@portal-test ~]# ll -h /root/isales-crm-prod-logs/
total 892K
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/23 08:29:21 2024-08-22
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/25 12:01:45 2024-08-24
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/26 08:28:49 2024-08-25
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/27 00:00:44 2024-08-26
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/28 00:00:36 2024-08-27
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/29 04:45:33 2024-08-28
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/30 08:55:56 2024-08-29
drwxr-xr-x. 2 nobody nobody 4.0K 2024/08/31 07:11:44 2024-08-30
-rw-r--r--. 1 nobody nobody  17K 2024/08/23 09:42:28 isales-crm-547bd98cb8-q46sc-info.log
-rw-r--r--. 1 nobody nobody 127K 2024/08/29 13:42:34 isales-crm-549bf9989d-7mnxs-info.log
-rw-r--r--. 1 nobody nobody  31K 2024/08/22 19:23:49 isales-crm-5b8649598b-f6v8z-info.log
-rw-r--r--. 1 nobody nobody  606 2024/08/31 08:47:44 isales-crm-5f697c984f-g2p6j-info.log
-rw-r--r--. 1 nobody nobody 4.6K 2024/08/31 11:49:28 isales-crm-5f697c984f-mwmjm-info.log
-rw-r--r--. 1 nobody nobody 9.6K 2024/08/30 11:48:09 isales-crm-66bb766cd6-xw6fh-info.log
-rw-r--r--. 1 nobody nobody  66K 2024/08/22 18:50:31 isales-crm-6b7f7c45fc-kxqhb-info.log
-rw-r--r--. 1 nobody nobody 126K 2024/08/22 18:19:29 isales-crm-76756d9967-pv5jp-info.log
-rw-r--r--. 1 nobody nobody 159K 2024/08/29 13:35:46 isales-crm-76c576f8bb-whkxc-info.log
-rw-r--r--. 1 nobody nobody 170K 2024/08/30 17:10:10 isales-crm-799cb57d8c-9m6jk-info.log
-rw-r--r--. 1 nobody nobody 127K 2024/08/30 17:31:00 isales-crm-799cb57d8c-ksj4j-info.log

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐