SpringBoot 项目在Linux 环境下,日志文件logback撑爆云服务器

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 项目在Linux 环境下,日志文件logback撑爆云服务器相关的知识,希望对你有一定的参考价值。

我为公司写了一个简单的微信小程序部署到客户云服务器现场,第二天到公司,负责该项目维护的同事告知我说,客户现场的云服务器无法连接,直接求助云服务器运营商重启服务器,才能访问客户的云服务。检查了云服务存储分布,发现该服务器生成的错误日志文件过大,不得让我心里发憷一下。由于日志文件过大,无法使用文本编辑器打开错误内容。但是直觉告诉我,生成的日志文件好像使用的日志的滚动模式不断追加,导致日志撑爆服务器。

第一步:检查自己关于错误日志模式的配置(logback)

报错的配置:我采用的是滚动日志输出,导致系统有错误导致日志文件不断输出,撑爆服务器,但是,滚动模式非常适合我日常的项目日志输出信息输出。

 <!-- ERROR级别日志 -->  
    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender-->  
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <!-- 过滤器,只记录WARN级别的日志 -->  
        <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>$log_dir/%dyyyy-MM-dd/neo4j-error-log.log</fileNamePattern>  
            <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6,  
            则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除-->  
            <maxHistory>$maxHistory</maxHistory>  
        </rollingPolicy>  
          
        <!-- 按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。   
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">     
          <fileNamePattern>$log_dir/%dyyyy-MM-dd/.log.zip</fileNamePattern>     
          <minIndex>1</minIndex>     
          <maxIndex>3</maxIndex>     
        </rollingPolicy>   -->  
        <!-- 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动   
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">     
            <maxFileSize>5MB</maxFileSize>     
        </triggeringPolicy>   -->  
          
        <encoder>  
            <pattern>%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger - %msg%n</pattern>  
        </encoder>  
    </appender>  
      

正确配置:在正式环境下,就需要禁用滚动日志,开启窗口模式生成日志

 <!-- ERROR级别日志 -->  
    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender-->  
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    	 <file>$log_dir/%dyyyy-MM-dd/neo4j-error-log.log</file> 
        <!-- 过滤器,只记录WARN级别的日志 -->  
        <filter class="ch.qos.logback.classic.filter.LevelFilter">  
            <level>ERROR</level>  
            <onMatch>ACCEPT</onMatch>  
            <onMismatch>DENY</onMismatch>  
        </filter>  
     
          
        <!-- 按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。    -->  
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">     
          <fileNamePattern>$log_dir/%dyyyy-MM-dd/neo4j-error-log.log.%i.gz</fileNamePattern>     
          <minIndex>1</minIndex>     
          <maxIndex>3</maxIndex>     
        </rollingPolicy>  
        <!-- 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动   -->  
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">     
            <maxFileSize>50MB</maxFileSize>     
        </triggeringPolicy>   
          
        <encoder>  
            <pattern>%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger - %msg%n</pattern>  
        </encoder>  
    </appender>  

以上是关于SpringBoot 项目在Linux 环境下,日志文件logback撑爆云服务器的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 项目在Linux 环境下,日志文件logback撑爆云服务器

springboot整合~swagger~kafka~nginx~redis~mysql(在linux服务器环境下部署运行测试)

Linux Centos7环境下Docker搭建并运行SpringBoot的jar包

SpringBoot入门-开发环境热部署

Linux下部署springboot项目的步骤及过程

Linux环境下docker中安装Redis--整合springboot