卿岚 2022-10-25 16:33 采纳率: 76.8%
浏览 86
已结题

springboot日志进行分割

想要对日志进行分割成两个,将ERROR、WARN分到一个,INFO、DEBUG的分到一个。
目前的宝塔面板linux启动指令为 sudo -u springboot nohup /usr/bin/java -jar /springboot/ems.jar --server.port=8082 >> /tmp/ems.log 2>&1 &
配置文件如下

img

  • 写回答

3条回答 默认 最新

  • 夜郎king 2022博客之星IT其它领域TOP 12 2022-10-25 20:52
    关注

    springboot支持logback的集成,推荐用这种模式,以下支持按照日志级别和日期进行分割,关键代码如下,供参考:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!--  多环境支持,从spring的配置文件中配置目录 update by wuzuhu on 20220713 -->
        <springProperty scope="context" name="log.path" source="yelangapp.logPath"/>
        <!-- 日志输出格式 -->
        <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
        <!-- 控制台输出 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
        </appender>
        <!-- 系统日志输出 -->
        <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}/sys-info.log</file>
            <!-- 循环政策:基于时间创建日志文件 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名格式 -->
                <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 15天 -->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 过滤的级别 -->
                <level>INFO</level>
                <!-- 匹配时的操作:接收(记录) -->
                <onMatch>ACCEPT</onMatch>
                <!-- 不匹配时的操作:拒绝(不记录) -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        
        <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}/sys-error.log</file>
            <!-- 循环政策:基于时间创建日志文件 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名格式 -->
                <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 15天 -->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 过滤的级别 -->
                <level>ERROR</level>
                <!-- 匹配时的操作:接收(记录) -->
                <onMatch>ACCEPT</onMatch>
                <!-- 不匹配时的操作:拒绝(不记录) -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        
        <appender name="file_boot_monitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}/file-boot-monitor.log</file>
            <!-- 循环政策:基于时间创建日志文件 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名格式 -->
                <fileNamePattern>${log.path}/file-boot-monitor.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 1天 -->
                <maxHistory>1</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 过滤的级别 -->
                <level>INFO</level>
            </filter>
        </appender>
        
        <!-- 用户访问日志输出  -->
        <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}/sys-user.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 按天回滚 daily -->
                <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 15天 -->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
        </appender>
        
        <!-- 系统模块日志级别控制  -->
        <logger name="com.yelang" level="info" />
        <!-- Spring日志级别控制  -->
        <logger name="org.springframework" level="warn" />
    
        <root level="info">
            <appender-ref ref="console" />
        </root>
        
        <!--系统操作日志-->
        <root level="info">
            <appender-ref ref="file_info" />
            <appender-ref ref="file_error" />
            <appender-ref ref="file_boot_monitor" />
        </root>
        
        <!--系统用户操作日志-->
        <logger name="sys-user" level="info">
            <appender-ref ref="sys-user"/>
            <appender-ref ref="file_boot_monitor" />
        </logger>
    </configuration> 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月25日
  • 已采纳回答 10月25日
  • 创建了问题 10月25日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来