一、springboot 默认日志
1、默认日志框架 Logback :
默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了。
从上图可以看到,日志输出内容元素具体如下:
- 时间日期:精确到毫秒
- 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
- 进程ID
- 分隔符:— 标识实际日志的开始
- 线程名:方括号括起来(可能会截断控制台输出)
- Logger名:通常使用源代码的类名
- 日志内容
2、SpringBoot默认配置了【org.slf4j】
定义了一套接口,是一个日志门面,可实现多个日志系统间快速切换(通过修改配置文件)
具体日志实现可以选用Log4j, commons logging, logback 或者 java.util.logging。
3、使用实例
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class StudyBootDemoApplication {
protected static final Logger logger = LoggerFactory.getLogger(StudyBootDemoApplication.class);
public static void main(String[] args) {
logger.info("SpringBoot开始加载");
SpringApplication.run(StudyBootDemoApplication.class, args);
logger.info("SpringBoot加载完毕");
}
}
springboot有默认配置,所以可以不用自己定义log配置,若需要设置日志级别以及输出文件则需要
在application.properties中简单配置:
#配置日志
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
logging.path=./log/info.log
二、使用Log4j。
由于springboot没有集成Log4j,所以需要自己来集成。如果是用这种方式,就不要在aoolication.properties中配置log了。
1、修改pom.xml文件,
过滤掉自带的spring-boot-starter-logging,然后添加spring-boot-starter-log4j依赖包。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除自带的logback依赖,这一个就可以去掉所有自带的日志实现系统 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
2、 在resources目录下新建log4j.properties配置文件
配置info,error,console,debug四种输出格式。
project=datasight
logdir=./logs/${project}
### set log levels ###
log4j.rootLogger = info,stdout
# config this project appender,log level:info,error #
log4j.logger.com.ts.report = info,error,bizInfo,bizError
### 控制台输出 ###
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=[%-d{yyy-MM-dd HH\:mm\:ss}]-[%p]-[%l] - %m%n
# info log everyday file#
log4j.loger.bizInfo = info,bizInfo
log4j.appender.bizInfo=org.apache.log4j.DailyRollingFileAppender
log4j.appender.bizInfo.File=${logdir}/info.log
log4j.appender.bizInfo.layout=org.apache.log4j.PatternLayout
log4j.appender.bizInfo.DatePattern='_'yyyy-MM-dd
log4j.appender.bizInfo.layout.ConversionPattern=[%-d{yyy-MM-dd HH\:mm\:ss}]-[%p]-[%l] - %m%n
log4j.appender.bizInfo.Threshold=INFO
#log4j.additivity.bizInfo=false
## error log ##
log4j.loger.bizError = info,bizError
log4j.appender.bizError = org.apache.log4j.DailyRollingFileAppender
log4j.appender.bizError.File = ${logdir}/error.log
log4j.appender.bizError.layout = org.apache.log4j.PatternLayout
log4j.appender.bizError.DatePattern='_'yyyy-MM-dd
log4j.appender.bizError.layout.ConversionPattern =[%-d{yyy-MM-dd HH\:mm\:ss}]-[%p]-[%l] - %m%n
log4j.appender.bizError.Threshold = ERROR
3.、 在使用到的类中声明log以及输出log信息。
//Log4j自带的
private static final Logger LOGGER = Logger.getLogger(Application.class);
//或者用SLF4j门面都可以
private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
输出结果如下:
扫描二维码关注公众号,回复:
2694469 查看本文章
附录:
1、过滤掉自带的spring-boot-starter-logging,然后没有添加spring-boot-starter-log4j依赖包,console显示的是