Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。Springboot对于数据访问层,不管是 SQL还是 NOSQL,Spring Boot 底层都是采用 Spring Data 的方式统一处理。
SpringBoot默认的日志实现是使用slf4j+logback,这种实现类似于JDBC + 数据库驱动(统一接口+实现类)。
Spring Boot默认使用LogBack日志系统,如果不需要更改为其他日志系统如Log4j2等,则无需多余的配置,LogBack默认将日志打印到控制台上。
日志级别从低到高分为:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL。
如果设置为 INFO ,则低于 INFO 的信息都不会输出其他的依次类推
默认情况下,Spring Boot会用Logback来记录内部日志,并用INFO级别输出到控制台你不用做任何设置
从上图可以看到,日志输出内容元素具体如下:
时间日期:精确到毫秒
日志级别:
进程ID
分隔符:--- 标识实际日志的开始
线程名:方括号括起来(可能会截断控制台输出)
Logger名:通常使用源代码的类名
日志内容
自己程序添加日志
基于类的方式
以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法
这和我们单独使用日志jar包有所不同
package com.fashvn.ctmsdata.logtest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogTest {
private static final Logger logger=LoggerFactory.getLogger(LogTest.class);
public static void main(String[] args) {
logger.error("简单的日志记录测试:{}+{}={}",1,2,3);
}
}
基于注解方式
上面那种方式每次都要重复添加记录器那一行代码这里可以基于注解方式但是需要使用lombok前提你IDEA配置了lombok插件然后maven添加了lombok依赖才可以
package com.fashvn.ctmsdata.logtest;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogTest {
public static void main(String[] args) {
log.error("简单的日志记录测试:{}+{}={}", 1, 2, 3);
}
}
现在你就可以愉快的在自己程序了使用日志了
修改配置
您还可以通过启动您的应用程序 --debug 标志来启用“调试”模式(开发的时候推荐开启),以下两种方式皆可:
在运行命令后加入--debug标志,如:$ java -jar springTest.jar --debug在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别。
如何你的日志记录需求简单你可以通过springboot提供的属性进行日志的简单配置复杂日志记录功能需要单独定义配置文件
logging:
# 将日志输出到文件 注意name和path同时使用只会生效后一个配置
file:
# 日志名称可以是相对路径和绝对路径
name:
#日志路径 可以是相对路径和绝对路径,帮我们自动生成spring.log的日志文件
path:
# 日志文件大小默认是10M单位是KB
max-size:
# 每天切割打包日志的数量默认是7
max-history:
#日志格式
pattern:
#输出到日志文件日志格式
file:
#输出到控制台日志格式
# %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
console:
#时间格式 默认 yyyy-MM-dd HH:mm:ss.SSS
dateformat:
#日志等级对齐方式 默认%5p日志级别输出右对齐
level:
#切割文件名称 默认是${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz 如过单个日志文件超过定义的大小就切割打包
rolling-file-name:
#需要记录日志的等级
level:
# 根目录所以class日志记录等级
root: debug
# 自定义对应包下class 日志等级
com.fashvn.ctmsdata: debug
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2:log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging):logging.properties
Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,spring boot可以为它添加一些spring boot特有的配置项
如果你即想完全掌控日志配置,但又不想用logback.xml作为Logback配置的名字,application.yml可以通过logging.config属性指定自定义的名字
logging.config=classpath:logging-config.xml
虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行时Profile使用不同的日志配置,这个功能会很有用。
一般不需要这个属性,而是直接在logback-spring.xml中使用springProfile配置,不需要logging.config指定不同环境使用不同配置文件
logback-demo%d -1 %msg%n%d -2 %msg%n%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%nERROR-->ERRORDENYACCEPT和,那么当天日志是,明天会自动把今天
的日志改名为今天的日期。即,的日志都是当天的。
-->${logback.logdir}/info.${logback.appname}.log${logback.logdir}/info.${logback.appname}.%d{yyyy-MM-dd}.log901GB-->UTF-8%d [%thread] %-5level %logger{36} %line - %msg%nError和,那么当天日志是,明天会自动把今天
的日志改名为今天的日期。即,的日志都是当天的。
-->${logback.logdir}/error.${logback.appname}.log${logback.logdir}/error.${logback.appname}.%d{yyyy-MM-dd}.log901GB-->UTF-8%d [%thread] %-5level %logger{36} %line - %msg%n
Spring-Boot-+-Flowable-快速实现工作流