在本教程中,我们将借助示例学习Java日志记录及其各种组件。
Java允许我们通过日志记录过程来创建和捕获日志消息和文件。
在Java中,日志记录需要框架和API。Java在java.util.logging程序包中具有内置的日志记录框架。
我们还可以将第三方框架(如Log4j,Logback等)用于日志记录。
下图显示了Java Logging API(java.util.logging)的核心组件和指定流程。
Logger类提供了日志记录的方法。我们可以从Logger类中实例化对象并调用其方法以进行记录。
让我们举个实例。
Logger logger = Logger.getLogger("newLoggerName");
Logger类的getLogger()方法用于查找或创建新的Logger。 字符串参数定义logger的名称。
在这里,这将创建一个新Logger对象或返回一个具有相同名称的Logger对象。
按照惯例,使用class.getName()在当前类之后定义一个Logger。
Logger logger = Logger.getLogger(MyClass.class.getName());
注意:如果传递的名称为null,该方法将抛出NullPointerException。
每个Logger都有确定日志消息重要性的级别。有7个基本日志级别:
日志级别(降序)使用SEVERE严重故障WARNING警告消息,潜在问题
INFO常规运行时信息CONFIG配置信息FINE普通的开发人员信息(跟踪消息)
FINER详细的开发人员信息(跟踪消息)
FINEST高度详细的开发人员信息(跟踪消息)
OFF关闭所有级别的日志记录(不捕获任何内容)
ALL打开所有级别的日志记录(捕获所有内容)
每个日志级别都有一个整数值,用来确定它们的严重性,除了两个特殊的日志级别OFF和ALL之外。
默认情况下,始终会记录前三个日志级别。要设置其他级别,我们可以使用以下代码:
logger.setLevel(Level.LogLevel); logger.setLevel(Level.FINE);
在本示例中,只有Level.FINE和它之上的级别被设置为日志记录。删除所有其他日志消息。
现在要记录一条日志消息,我们使用该log()方法。
logger.log(Level.LogLevel, "log message"); logger.log(Level.INFO, "This is INFO log level message");
有一些用于记录所需级别的速记方法。
logger.info( "这是INFO日志级别的消息"); logger.warning( "这是WARNING日志级别的消息");
然后,已通过设置的日志级别的所有日志请求都将转发到LogRecord。
注意:如果一个日志记录器的级别被设置为null,那么它的级别将从其父继承,以此类推。
过滤器(如果存在)决定LogRecord是否转发该日志记录。顾名思义,它根据特定的标准过滤日志消息。
如果LogRecord通过指定的条件,则仅从记录器传递到日志处理程序,并从日志处理程序传递到外部系统。
logger.setFilter(filter); Filter filter = logger.getFilter();
日志处理程序或附加程序将接收LogRecord并将其导出到各种目标。
Java SE提供了5个内置处理程序:
处理程序使用StreamHandler写入OutputStream
ConsoleHandler写入控制台FileHandler写入文件SocketHandler写入到远程TCP端口
MemoryHandler写入内存处理程序可以将LogRecord传递到过滤器,以再次确定是否可以将其转发到外部系统。
要添加新的处理程序,我们使用以下代码:
logger.addHandler(handler); // 示例 Handler handler = new ConsoleHandler(); logger.addHandler(handler);
要删除处理程序,我们使用以下代码:
logger.removeHandler(handler); // 示例 Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
一个记录器可以有多个处理程序。要获取所有处理程序,我们使用以下代码:
Handler[] handlers = logger.getHandlers();
处理程序还可以使用Formatter将LogRecord对象格式化为字符串,然后再将其导出到外部系统。
Java SE具有两个内置的Formatter:
格式化程序使用SimpleFormatter将LogRecord格式化为字符串
XMLFormatter将LogRecord格式化为XML格式
我们可以使用以下代码来格式化处理程序:
handler.setFormatter(new SimpleFormatter()); handler.setFormatter(new XMLFormatter());
日志管理对象跟踪的全球记录的信息。它读取并维护日志记录配置和记录器实例。
日志管理器是单例,这意味着仅实例化了一个实例。
要获取日志管理器实例,我们使用以下代码:
LogManager manager = new LogManager();
这是使用Java 日志的一些优点。
帮助监控程序的流程
帮助捕获可能发生的任何错误
为问题诊断和调试提供支持
相关知识
如何在 Java 中进行日志记录
Spring Boot 日志
logging — Python 的日志记录工具 — Python 文档
在 Spring Boot 中使用 Logback 和 Log4j2 记录日志
大模型训练:高效保存与解析日志的策略
Python 日志教程
Pytorch 使用Pytorch Lightning DDP时记录日志的正确方法
pytorch单机多卡训练 logger日志记录和wandb可视化
ASP.NET Core
编写Java程序模拟主人养宠物 java写一个宠物系统
网址: Java 日志(Logging) https://m.mcbbbk.com/newsview419850.html
上一篇: 少年观鸟日志(7) |
下一篇: 大理苍山鸟类物种记录首次突破35 |