java 打印日志文件存放到制定位置

1.application中添加的配置:

logging:
  level:
    root: info
    # 前面是java包下面的包路径(com.caeri.projection)
    com.caeri.projection: info
    org.springframework.boot.autoconfigure: ERROR
    com.baimidou.mybaitsplus: error
    # 打印执行的sql语句(mapper包的路径)
    com.caeri.projection.mapper: debug

2.在resources文件下创建logback.xml文件,文件内容是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路径 /home/projection/logs--根据自己设置的路径进行修改-->
   <property name="log.path" value="/home/projection/logs" />
    <!-- 日志输出格式 -->
   <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>
         <!-- 日志最大的历史 60天 -->
         <maxHistory>60</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>
         <!-- 日志最大的历史 60天 -->
         <maxHistory>60</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="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>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
   
   <!-- 系统模块日志级别控制  -->
   <logger name="com.ruoyi" 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" />
    </root>
   
   <!--系统用户操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration> 

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
解决思路: 1. 首先需要在pom.xml中引入logback-classic依赖,用于实现日志文件的输出。 2. 在src/main/resources下创建logback.xml文件,用于配置日志输出的相关内容,包括日志输出的格式、级别、文件路径等。 3. 在logback.xml中配置多个appender(即输出目标),每个appender对应一个日志文件,可以分别配置不同的文件路径、日志级别、保存期限等。 4. 配置logger,指定日志输出的级别和输出目标。可以为不同的包或类指定不同的日志级别和输出目标。 实现代码: 1. 在pom.xml中引入logback-classic依赖: ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> ``` 2. 创建logback.xml文件,配置日志输出内容: ```xml <configuration> <!-- 定义日志输出格式 --> <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /> <!-- 定义控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${pattern}</pattern> </encoder> </appender> <!-- 定义info级别的日志输出到文件info.log --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/var/log/myapp/info.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/var/log/myapp/info.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>${pattern}</pattern> </encoder> </appender> <!-- 定义error级别的日志输出到文件error.log --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/var/log/myapp/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/var/log/myapp/error.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>${pattern}</pattern> </encoder> </appender> <!-- 定义logger,指定日志输出的级别和输出目标 --> <logger name="com.example.myapp" level="info"> <appender-ref ref="INFO" /> </logger> <logger name="com.example.myapp.service" level="error"> <appender-ref ref="ERROR" /> </logger> <!-- 定义根logger,输出到控制台 --> <root level="debug"> <appender-ref ref="CONSOLE" /> </root> </configuration> ``` 上述代码中,定义了三个输出目标:控制台(CONSOLE)、info级别的日志文件(INFO)和error级别的日志文件(ERROR)。其中,RollingFileAppender用于循环输出日志文件,TimeBasedRollingPolicy用于按日期循环输出日志文件,maxHistory指定保存的最大文件数。 3. 在代码中使用Logger对象记录日志: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyService { private static final Logger logger = LoggerFactory.getLogger(MyService.class); public void doSomething() { logger.info("info log message"); logger.error("error log message"); } } ``` 上述代码中,使用了slf4j的LoggerFactory创建Logger对象,并在代码中使用Logger对象记录日志。根据logback.xml中的配置,info级别的日志输出到/var/log/myapp/info.log文件中,error级别的日志输出到/var/log/myapp/error.log文件中。对于其他级别的日志,输出到控制台。 4. 配置application.properties文件,禁用springBoot自带的日志配置: ``` logging.config=classpath:logback.xml logging.level.root=error ``` 上述代码中,logging.config指定logback.xml文件位置,logging.level.root指定根logger的日志级别。 通过上述步骤,即可实现在基于springBoot项目开发的应用程序中,将项目中打印日志按不同的内容存储在不同路径的文件下,并根据需求分别指定每份文件日志打印级别及保存期限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值