亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 日志记录

Java 日志记录

在本教程中,我们将通过示例了解 Java Logging 及其各种组件。

Java 允许我们通过日志记录的过程来创建和捕获日志消息和文件。

在 Java 中,日志记录需要框架和 API。 Java在java.util.logging中有一个内置的日志框架 包。

我们还可以使用 Log4j、Logback 等第三方框架进行日志记录。


Java 日志组件

下图表示Java Logging API(java.util.logging的核心组件和控制流程 )。

<图>

1。记录器

Logger 类提供记录方法。我们可以从 Logger 实例化对象 类并调用其方法进行日志记录。

举个例子吧。

Logger logger = Logger.getLogger("newLoggerName");

getLogger() Logger的方法 类用于查找或创建新的 Logger .字符串参数定义记录器的名称。

在这里,这将创建一个新的 Logger 对象或返回现有的 Logger 同名。

定义 Logger 是一种约定 在当前类之后使用 class.getName() .

Logger logger = Logger.getLogger(MyClass.class.getName());

注意: 这个方法会抛出 NullPointerException 如果传递的名称是 null .

每个 Logger 具有确定日志消息重要性的级别。有 7 个基本的日志级别:

日志级别(降序) 使用
严重 严重失败
警告 警告信息,潜在问题
信息 一般运行时信息
配置 配置信息
很好 一般开发者信息(跟踪消息)
更精细 详细的开发者信息(跟踪消息)
最好的 高度详细的开发者信息(跟踪消息)
关闭 关闭所有级别的日志记录(不捕获任何内容)
全部 打开所有级别的日志记录(捕获所有内容)

每个日志级别都有一个整数值来确定它们的严重性,除了两个特殊的日志级别 OFFALL .


记录消息

默认情况下,始终记录前三个日志级别。要设置不同的级别,我们可以使用以下代码:

logger.setLevel(Level.LogLevel);

// example
logger.setLevel(Level.FINE);

在这个例子中,只有级别 FINE 并且高于它的级别被设置为被记录。所有其他日志消息都将被删除。

现在要记录一条消息,我们使用 log() 方法。

logger.log(Level.LogLevel, "log message");

// example
logger.log(Level.INFO, "This is INFO log level message");

有一些速记方法可以在所需级别进行日志记录。

logger.info( "This is INFO log level message");
logger.warning( "This is WARNING log level message");

所有通过设置日志级别的日志请求然后转发到 LogRecord .

注意: 如果记录器的级别设置为 null ,它的级别是从它的父级继承的,依此类推。


2。过滤器

过滤器(如果存在)确定 LogRecord 应该转发还是不转发。顾名思义,它根据特定条件过滤日志消息。

一个日志记录 仅在通过指定条件时才从记录器传递到日志处理程序并从日志处理程序传递到外部系统。

// set a filter
logger.setFilter(filter);

// get a filter
Filter filter = logger.getFilter();

3.处理程序(附加程序)

日志处理程序或附加程序接收 LogRecord 并将其导出到各种目标。

Java SE 提供了 5 个内置的处理程序:

处理程序 使用
StreamHandler 写入 OutputStream
ConsoleHandler 写入控制台
FileHandler 写入文件
SocketHandler 写入远程 TCP 端口
MemoryHandler 写入内存

处理程序可以传递 LogRecord 到一个过滤器,以再次确定它是否可以转发到外部系统。

要添加新的处理程序,我们使用以下代码:

logger.addHandler(handler);

// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

要删除处理程序,我们使用以下代码:

logger.removeHandler(handler);

// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

一个记录器可以有多个处理程序。要获取所有的处理程序,我们使用以下代码:

Handler[] handlers = logger.getHandlers();

4.格式化程序

处理程序也可以使用 Formatter 格式化 LogRecord 在将对象导出到外部系统之前将其转换为字符串。

Java SE 有两个内置的 Formatter

格式化程序 使用
SimpleFormatter 格式 日志记录 到字符串
XMLFormatter 格式 日志记录 转成 XML 格式

我们可以使用以下代码来格式化处理程序:

// formats to string form
handler.setFormatter(new SimpleFormatter());

// formats to XML form
handler.setFormatter(new XMLFormatter());

日志管理器

日志管理器 对象跟踪全局日志信息。它读取并维护日志记录配置和记录器实例。

日志管理器是单例的,这意味着它只有一个实例被实例化。

获取日志管理器实例,我们使用如下代码:

LogManager manager = new LogManager();

记录的优势

以下是使用 Java 登录的一些优点。


java

  1. Java 运算符
  2. Java 评论
  3. Java if...else 语句
  4. Java for-each 循环
  5. Java 字符串
  6. Java 接口
  7. Java 匿名类
  8. Java try-with-resources
  9. Java 注释
  10. Java 断言
  11. Java 向量
  12. 使用 Java 登录:需要考虑的关键提示