Idea输出台打印Sql日志

本文详细介绍如何在SpringBoot项目中配置控制台及文件日志输出,包括日志级别设置、日志格式化、日志文件滚动策略等,并通过AOP实现业务操作日志记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输出台日志的重要性就不多说了,直接上图看是如何做的:

在这里插入图片描述

我输入了“张无忌”,并点击查询,看一下控制台的日志,如图:可以看到,有调用的方法,SQl,查询条件,以及结果
在这里插入图片描述
同时日志保存在了一个文件中,如图
在这里插入图片描述

需要如何做呢,两个文件即可:

在这里插入图片描述
代码如下,其中有两个地方需要改,都标出来了,其中的日志输出的级别可以自己挑,一般都是debug

<?xml version="1.0" encoding="UTF-8"?>


<configuration debug="false">
   <!--需要修改的地方1-->
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="C:/java/log/yang" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--<file>${LOG_HOME}/ghxcinfo.log</file>-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <!--<FileNamePattern>C:/java/log/ghxcinfo/ghxcinfo.log.%d{yyyy-MM-dd}.log</FileNamePattern>-->
            <FileNamePattern>${LOG_HOME}/tjzx_%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>60</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>GBK</charset>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!--需要修改的地方2-->
    <!--这里就是你自己的项目名-->
    <logger name="com.sztk.demo" level="all" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>

</configuration>

在这里插入图片描述
第二个文件,其中只有一个需要改的地方,标注出来了,这只是简单的介绍,其实这个文件很强大,详细讲的话,怕是一时半会搞不定,主要还是晚了点。。。,代码如下

package com.sztk.demo.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;


@Aspect
@Component
public class HttpAspect {

    private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
     
     /**这里是你需要改的地方,注意一定是调用你mapper(dao)层的业务实现层啊,看你的业务实现层在哪,千万别错了**/
    @Pointcut("execution(public * com.sztk.demo.service.impl.*.*(..))")
    public void log(){
    }


    public void doBefore(JoinPoint joinPoint){
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        //url
        logger.info("url={}", request.getRequestURI());
        //method
        logger.info("method={}", request.getMethod());
        //ip
        logger.info("ip={}",request.getRemoteAddr());
        //类方法
        logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
        //参数
        logger.info("args={}", joinPoint.getArgs());
    }
    /**其实这个方法很强。。。**/
    public void doAfter(){
    }
    public void doAfterReturing(Object object) {
        logger.info("response={}", object.toString());
    }
}

最后,提供一个pom文件,其他的都是建springboot项目自带的pom,代码如下:

 <!--HttpAspect-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.2</version>
        </dependency>

就到这了,控制台日志的输出还是很重要的,用来调试和测试debug很重要,以上的内容对你有用,或者一次点亮,欢迎下方留言指教

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值