一、日志技术
程序中的日志可以用来记录程序运行过程中的信息,并可以进行永久存储。一旦业务出现问题,可以通过日志信息去定位。
二、日志技术的优势
可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。
三、日志的体系结构
日志规范大多是一些接口,提供给实现框架去设计的。
日志常见的规范接口有:Commons Logging(JLC)、Simple Logging Facade for Java(slf4j)
日志常见的实现框架有:Log4j、JUL、Logback,一般在项目中都是采用Logback。
四、Logback日志框架
Logback是基于slf4j的日志规范实现的框架,性能比之前使用的log4j要好。
Logback主要分为三个技术模块:
logback-core:该模块为其他两个模块提供基础代码,必须有。
logback-classic:完整实现了slf4j API的模块。
logback-access:模块与 Tomcat 和 Jetty 等 Servlet 容器集成,以提供 HTTP 访问日志功能。
五、Logback配置详解
Logback日志系统的特性都是通过核心配置文件logback.xml控制的。
5.1、<append>标签的设置
通过logback.xml 中的<append>标签可以设置输出位置和日志信息的详细格式。
下面是控制台对应的输出内容:
其中要想把日志输出到系统某一位置并保存,需要将appender name设置为File。并在file标签中设置具体存储的路径。
5.2、<root>标签的设置
可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出。
日志级别排序:
TRACE< DEBUG< INFO<WARN<ERROR
其中默认级别是debug,ALL和OFF分别是打开全部日志信息,及关闭全部日志信息。
在logback.xml 中的配置
六、 日志中异常信息定位
我们经常通过日志中的异常信息去查询问题,出现异常的第一行是代码中具体出现异常的位置,第二行是调用第一行方法的位置,第三行是调用第二行方法的位置,以此类推。
因为java中抛异常是从内往外,下面的报错都是由于一层层传递调用该方法导致的。
所以我们一般只用重点关注异常信息的第一行,去定位代码中具体什么位置出现了异常。
通过上面日志中的异常信息我们可以了解到在OSSClient.java这个类中的268行出现了NoClassDefFoundError的错误。
在OSSClient.java这个类中的193行,调用了第一行代码所在的方法。