1.sprinboot对日志支持
a.常见的日志框架
JCL,JUL,jboss-logging,logback,log4j,log4j2,slf4j...
b.springboot默认选用slf4j,logback;
c.sprinboot默认配置好了日志,我们直接使用即可;
日志级别:
TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF;
idea:ctrl+shif+n 快速定位类
默认级别:info(只打印info及以后的日志)
自定义日志级别:可以在全局配置文件中修改;
logging.level.主配置类所在包名=warn
设置日志文件保存的位置:
loggin.file=springboot.log(相对于项目的根目录)
loggin.file=d:/springboot.log(绝对路径)
loggin.path=d:/log/ (将日志放入该文件夹默认文件名为spring.log)
指定日志显示格式:
1.日志显示在console中
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
%d日期时间{格式}
[%thread]线程名
%-5level 显示日志级别:-5:表示从左显示5个字符宽度
%logger{50}:设置日志长度超过50部分不要;
%msg:日志消息
%n:回车
2.日志放在文件中
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
日志的具体说明:
https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#boot-features-logging-format
默认的日志格式时在对应的日志的jar中相应的xml文件中进行配置的;
在JavaBean中使用:构建日志对象
Logger logger=LoggerFactory.getLogger(DemoApplicationTests.class);
springboot整合log4j
1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
2.在resources目录下新建log4j.properties
https://blog.csdn.net/sinat_30185177/article/details/73550377
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=D://logs/log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =d://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
3.javaBean使用
Logger logger=Logger.getLogger(TestController.class);
4.使用Aop统一管理web请求日志
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
//使用Aop统一管理web请求日志
@Aspect
@Component
public class WeblogAspect {
private static Logger logger=Logger.getLogger(WeblogAspect.class);
@Pointcut("execution(public * com.online.controller.*.*(..))")
public void webLog() {
}
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) {
ServletRequestAttributes attributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
logger.info("getRequestURL"+request.getRequestURL().toString());
logger.info("getMethod"+request.getMethod());
logger.info("getRemoteAddr"+request.getRemoteAddr());
Enumeration<String> en = request.getParameterNames();
while (en.hasMoreElements()) {
String nextElement = en.nextElement();
logger.info("name:{"+nextElement+"}"+",value:{"+request.getParameter(nextElement)+"}");
}
}
@AfterReturning(returning="obj",pointcut="webLog()")
public void doAfterReturning(Object obj){
logger.info("response:______---------------"+obj);
}