想搞清楚什么是日志,其实可以通过下面几个问题来了解的。
而日志就可以帮我们解决以上的问题。所以日志就好比生活中的日记,日记可以记录生活中的点点滴滴;而程序中的日志,通常就是一个文件,里面记录了程序运行过程中产生的各种数据。
日志技术有如下好处
知道了,什么是日志,日志能干什么。接下来需要给同学们介绍一下有哪些日志技术,以及日志的体系。
在行内,其实有很多日志框架给开发者使用。所谓日志框架就是由一些牛人或者第三方公司已经做好的实现代码,后来者就可以直接拿过去使用。
日志框架有很多种,比如有JUL(java.util.logging)、Log4j、logback等。但是这些日志框架如果使用的API方法都不一样的话,使用者的学习成本就很高。为了降低程序员的学习压力,行内提供了一套日志接口,然后所有的日志框架都按照日志接口的API来实现就可以了。
这样程序员只要会一套日志框架,那么其他的也就可以通用,甚至可以在多套日志框架之间来回切换。比较常用的日志框架,和日志接口的关系如下图所示
这里推荐同学们使用Logback日志框架,也在行业中最为广泛使用的。
Logback日志分为哪几个模块
接下来,快速使用一下Logback日志框架,使用Logback记录几条日志信息到文件中去和将日志信息打印在控制台上。
由于Logback是第三方提供的技术,所以首先需要啊将Jar包引入到项目中,具体步骤如下
在资料中找到slftj-api.jar、logback-core.jar、logback-classes.jar
这三个jar包,复制一下
在当前模块下面新建一个lib文件夹,把刚刚复制的三个jar包都粘贴到此处
从资料中找到logback.xml
配置文件,将此文件复制粘贴到src目录下(必须是src目录)
然后就可以开始写代码了,在代码中创建一个日志记录日对象
public static final Logger LOGGER = LoggerFactory.getLogger("当前类名");
开始记录日志,代码如下
public class LogBackTest {
// 创建一个Logger日志对象
public static final Logger LOGGER = LoggerFactory.getLogger("LogBackTest");
public static void main(String[] args) {
//while (true) {
try {
LOGGER.info("chu法方法开始执行~~~");
chu(10, 0);
LOGGER.info("chu法方法执行成功~~~");
} catch (Exception e) {
LOGGER.error("chu法方法执行失败了,出现了bug~~~");
}
//}
}
public static void chu(int a, int b){
LOGGER.debug("参数a:" + a);
LOGGER.debug("参数b:" + b);
int c = a / b;
LOGGER.info("结果是:" + c);
}
}
当我们运行程序时,就可以看到控制台记录的日志
同时在文件中,也有一份这样的日志信息。文件在哪里内,从配置文件中去找
打开D:/log/data.log
看一下文件中是否有记录日志吧!!
关于Logback的快速入门就做完了。至于日志的配置文件中,其他的配置是什么含义下一节再继续学习。
Logback提供了一个核心配置文件logback.xml,日志框架在记录日志时会读取配置文件中的配置信息,从而记录日志的形式。具体可以做哪些配置呢?
1. 可以配置日志输出的位置是文件、还是控制台
2. 可以配置日志输出的格式
3. 还可以配置日志关闭和开启、以及哪些日志输出哪些日志不输出。
如下图所示,控制日志往文件中输出,还是往控制台输出
如下图所示,控制打开和关闭日志
如下图所示,控制日志的输出的格式
日志格式是由一些特殊的符号组成,可以根据需要删减不想看到的部分。比如不想看到线程名那就不要[%thread]。但是不建议同学们更改这些格式,因为这些都是日志很基本的信息。
在哪里配置日志级别呢?如下图所示
Logback只输出大于或者等于核心配置文件配置的日志级别信息。小于配置级别的日志信息,不被记录。
配置的是trace,则trace、debug、info、warn、error级别的日志都被输出
配置的是debug, 则debug、info、warn、error级别的日志被输出
配置的是info,则info、warn、error级别的日志被输出
...