首页 >> 大全

日志笔记----1

2023-11-19 大全 26 作者:考证青年

最近在敲代码的时候经常出错,老是找不到原因,崩溃~~,(为什么不debug一下??作为一只小菜鸟,感觉只要debug和框架有关的,基本都看不懂),然后经人提醒才知道可以通过日志来打印一些关键信息来找错(以前的我都是简单粗暴的在代码中写输出语句的),但是以前学习的时候根本没怎么学日志,这一块的知识基本为空白,所以现在要好好补一下这方面的知识了。。。

日志的概念 1 日志文件

日志文件是用于记录系统操作事件的文件集合,可以分为事件日志和消息日志。具有 处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。
在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的文件。记录是保持日志的行为。

1.1 调试日志

软件开发中,我们经常需要去调试程序,做一些信息,状态的输出便于我们查询程序的运行状况。为了让我们能够更加灵活和方便的控制这些调试的信息,所有我们需要专业的日志技术。Java中寻找bug会需要重现。调试也就是debug可以在程序中暂停程序运行,可以查看程序在运行中的情况。日志主要是为了更方便的去重现问题。

1.2 系统日志

系统日志是记录在系统硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。

2 Java日志框架

问题:

1、控制日志输出的内容和格式

2、控制日志输出的位置

3、日志优化:异步日志,日志文件的归档和压缩

4、日志系统的维护

5、面向接口开发–日志的门面

2.1 为什么要用日志框架

因为软件系统发展到今天已经很复杂,特别是服务器端软件,涉及到的知识、内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑。而且框架一般都是成熟、稳定的。它可以处理系统很多细节问题,比如:事务处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所有结构很好,扩展性也很好。

2.2 现有的日志框架

JUL(java util )、、log4j、

JCL( )、slf4j( for Java)

日志门面

JCL、slf4j

日志实现

JUL、logback、log4j、log4j2

3 JUL学习

JUL全称Java util 是Java原生的日志框架,使用时不需要另外引入第三方类库,相对其他日志框架使用方便,学习简单,能够在小型应用中灵活使用。

3.1

日志笔记本型号_日志笔记本的样子_

:被称为记录器,应用程序通过获取对象,调用其API来发布日志信息。通常是应用程序访问日志系统的入口程序。

: 也被称为,每个都会关联一组,会将日志交给关联处理,有负责将日志做记录。在此是一个抽象,其具体的实现决定了日志记录的位置可以是控制台、文件、网络上的其他日志服务或操作系统日志等。

:也被称为,它负责对日志事件中的数据进行转换和格式化。决定了数据在一条日志记录中的最终形式。

Level:每条日志消息都有一个关联的日志级别。该级别粗略指导了日志消息的重要性和紧迫,我可以将Level和,做关联以便于我们过滤消息。

:过滤器,根据需要指定哪些信息会被记录,哪些信息会被放过。

日志案例

目录结构:

注意:使用@Test注解时需要引入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.2.4.RELEASE</version></dependency>
</dependencies>

package log1;
import org.junit.Test;
import java.util.logging.Level;
import java.util.logging.Logger;public class JUTTest {//初始案例@Testpublic void testQ(){//获取日志记录器对象Logger logger=Logger.getLogger("log1.JUTTest");//日志记录输出logger.info("hello jul");//通用方法进行日志记录logger.log(Level.INFO,"info msg");//通过占位符 方式输出变量值String name="itcast";Integer age=13;logger.log(Level.INFO,"用户信息:{0},{1}",new Object[]{name,age});}
/* 输出结果2月 16, 2020 9:56:33 下午 log1.JUTTest testQ信息: hello jul2月 16, 2020 9:56:33 下午 log1.JUTTest testQ信息: info msg2月 16, 2020 9:56:33 下午 log1.JUTTest testQ信息: 用户信息:itcast,13	*///日志级别@Testpublic void testLogLevel(){//获取日志记录器对象Logger logger=Logger.getLogger("log1.JUTTest");//日志记录输出logger.severe("severe");// 比 info 级别高,能输出logger.warning("warning");//比 info 级别高,能输出logger.info("info");    //默认日志级别//下面的几个没有 info 级别高,所以不会有输出logger.config("config");logger.fine("fine");logger.finer("finer");logger.finest("finest");}/* 输出结果:2月 16, 2020 9:37:04 下午 log1.JUTTest testLogLevel严重: severe2月 16, 2020 9:37:04 下午 log1.JUTTest testLogLevel警告: warning2月 16, 2020 9:37:04 下午 log1.JUTTest testLogLevel信息: info*/}
//自定义日志级别@Test
public void testLogConfig(){//获取日志记录器对象Logger logger=Logger.getLogger("log1.JUTTest");//关闭系统默认配置logger.setUseParentHandlers(false);//自定义配置日志级别//创建ConsoleHandlerConsoleHandler consoleHandler=new ConsoleHandler();//创建简单格式转换对象SimpleFormatter simpleFormatter=new SimpleFormatter();//进行关联consoleHandler.setFormatter(simpleFormatter);logger.addHandler(consoleHandler);//配置日志具体级别logger.setLevel(Level.ALL);consoleHandler.setLevel(Level.ALL);//场景FileHandler 文件输出FileHandler fileHandler=new FileHandler("d:/jul.log");//进行关联fileHandler.setFormatter(simpleFormatter);//日志记录输出logger.severe("severe");// 比 info 级别高,能输出logger.warning("warning");//比 info 级别高,能输出logger.info("info");    //默认日志级别//下面的几个没有 info 级别高,所以不会有输出logger.config("config");logger.fine("fine");logger.finer("finer");logger.finest("finest");}/*2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig严重: severe2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig警告: warning2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig信息: info2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig配置: config2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig详细: fine2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig较详细: finer2月 16, 2020 10:21:50 下午 log1.JUTTest testLogConfig非常详细: finest*/```java
在这里插入代码片

生成的日志文件:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了