一、日志格式
①:时间日期:准确到毫秒。
②:日志级别:ERROR,WARN,INFO,DEBUG,TRACE.
③:历程ID
④:日志的记录器名。
⑤:线程名
⑥:Logger名,通常利用源代码的类名。
⑦:日志内容
二、日志的级别
日志的级别代表着日志信息对应问题的严重性,为了更快的筛选符合目标的日志信息。
日志级别分类:(从高到低)
FATAL:致命错误,体现必要立即被处理的系统级错误。(现在已经被整合到了ERROR范例中)
ERROR:错误信息,级别较高的错误日志信息,但仍不影响系统的运行。
WARN:警告信息,不影响利用,但是必要注意的问题。
INFO:普通信息,用于记录应用步调正常运行时的一些信息,比方系统启动完成,请求处理完成。
DEBUG: 调试信息,必要调试的时间关键信息的打印。
TRACE:追踪信息,比DEBUG更细粒度的信息变乱(除非有特殊需求,一样平常利用DEBUG代替)。
日志级别是开发人员设置的,用来给开发人员看的,日志级别的准确设置,也和开发人员的工作经验有关,如果将ERROR设置成了INFO,会影响开发人员对项目运行情况的判断。
日志的级别越高,收到的信息越少。
三、利用日志对象打印日志
在这里我利用slf4j框架来打印日志。
- @RestController
- public class LoggerController {
- private static Logger logger = LoggerFactory.getLogger(LoggerController.class);
- @RequestMapping("/logger")
- public String logger() {
- logger.info("--------要输出的日志内容--------");
- return "打印日志";
- }
- }
复制代码 运行后会打印下列日志信息:
对slf4j的简介:
SLF4J并并不是一个真正的日志实现,而是一个抽象层,对日志框架订定的一种规范,标准,接口。SLF4J并不能独立利用,必要和具体的日志框架配合利用。
门面模式:
界说:
门面模式又称为外观模式,提供了一个统一的接口,用来访问子系统中的一群接口,其主要特征是界说了一个高层接口,让子系统更轻易利用。
门面模式主要包含2种脚色:
外观脚色:也称为门面脚色,系统对外的统一接口。
子系统脚色:可以同时有一个或多个子系统脚色,每个子系统脚色并不是单独的一个类,而是一个类的聚集,子系统脚色并不知道外观脚色的存在,对于子系统脚色而言,外观脚色只是一个客户端(即外观脚色对子系统脚色透明)。
四、日志级别的利用
日志级别是开发人员本身设置的,开发人员根据本身的理解来判断该信息的紧张程度。
针对这些级别,Logger对象分别提供了对应的方法来输出日志。
- @RequestMapping("/printLog")
- public String printLog() {
- logger.trace("------trace------");
- logger.debug("------debug------");
- logger.info("------info------");
- logger.warn("------warn------");
- logger.error("------error------");
- return "打印不同级别的日志";
- }
复制代码 默认情况是只会打印ERROR,WARN,INFO级别的信息的:
若要打印info级别以下的信息,必要配置日志级别。
必要在Spring的配置文件中配置,同时注意配置文件时yml还是Properties范例的。这里以Properties范例为例。
这时就会打印debug范例的了(trace日志太多,就不演示了)
五、日志持久化
以上的日志都是输出在控制台上的,然而在线上环境中,每每必要生存日志,以便出现问题后进行追溯问题,把日志生存下来就叫做持久化。
日志持久化的方式有两种
1.配置日志文件的路径和文件名:
Properties配置:(文件夹名/日志文件名)
- logging.file.name=logger/springboot.log
复制代码 运行后日志内容就出现在了对应的目次下:
2.配置日志文件的生存路径
Properties配置:
- logging.file.path=D:/temp
复制代码 这种方式只能设置日志文件生存的路径,日志文件的名称为默认的spring.log
运行步调,对应路径下就会多出一个日志文件:
注意:
logger.file.name和logger.file.path两个都配置的情况下,只能见效其一,以logger.file.name为准。
六、配置文件分割
如果把日志文件都放在一个地方,随着项目标运行,文件会越来越臃肿,而且查询的时间也欠好查询,此时就必要对日志文件进行分割。(日志框架也考虑到了这一点,主动配置的巨细是10MB,不过这对应一样平常项目来说太大了)。这里以2KB为例,d
配置文件分割:
Properties:
- logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}.%i
- logging.logback.rollingpolicy.max-file-size=2KB
复制代码 %i.gz末端的是压缩日志文件,而且日志并不是严格按照2KB进行分割的,如果有一些一连的,很长的文件,日志文件会超出一点来存储。
七、配置日志格式
打印日志的格式,也是支持配置的,这里举例一些:
1.%clr(表达式){颜色}:设置输入日志的颜色。
2.%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}日期和时间,准确到毫秒。
3.%5p:体现日志级别。
4.%t:线程名。
八、更简单的日志输出
1.起首添加lombok框架;
2.利用@slf4j注解输出日志。
- Slf4j
- @RestController
- public class LoggerController {
- public void log() {
- log.info("------info------");
- }
- }
复制代码 总结
1.日志是步调中的紧张构成部分,利用日志可以快速的发现和定位问题,SpringBoot的日志框架默认情况下利用的是将info级别及以上的日志信息进行打印,我们可以利用lombok提供的@SLf4j注解和log对象快速的打印自定应日志。
2.日志包含6个级别,日志级别越高,收到的日志信息越少,我们可以通过配置日志的生存名称或者生存目次来将日志持久化。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |