输出台日志的重要性就不多说了,直接上图看是如何做的:
我输入了“张无忌”,并点击查询,看一下控制台的日志,如图:可以看到,有调用的方法,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很重要,以上的内容对你有用,或者一次点亮,欢迎下方留言指教