Java 日志(Logging)

Java 日志(Logging)

Java 断言(Assert)Java 注解(Annotations)

Java 日志(Logging)

在本教程中,我们将借助示例学习Java日志记录及其各种组件。

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

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

我们还可以将第三方框架(如Log4j,Logback等)用于日志记录。

Java 日志组件下图显示了Java Logging API(java.util.logging)的核心组件和指定流程。

Java日志流程图1.LoggerLogger类提供了日志记录的方法。我们可以从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,那么它的级别将从其父继承,以此类推。

2.筛选器(Filter)过滤器(如果存在)决定LogRecord是否转发该日志记录。顾名思义,它根据特定的标准过滤日志消息。

如果LogRecord通过指定的条件,则仅从记录器传递到日志处理程序,并从日志处理程序传递到外部系统。

// 设置filter

logger.setFilter(filter);

// 获取 filter

Filter filter = logger.getFilter();3.处理程序(输出源)日志处理程序或附加程序将接收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();4.格式化程序(Formatter)处理程序还可以使用Formatter将LogRecord对象格式化为字符串,然后再将其导出到外部系统。

Java SE具有两个内置的Formatter:

格式化程序使用SimpleFormatter将LogRecord格式化为字符串

XMLFormatter将LogRecord格式化为XML格式

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

// 格式化成字符串形式

handler.setFormatter(new SimpleFormatter());

// 格式化成XML格式

handler.setFormatter(new XMLFormatter());日志管理器日志管理对象跟踪的全球记录的信息。它读取并维护日志记录配置和记录器实例。

日志管理器是单例,这意味着仅实例化了一个实例。

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

LogManager manager = new LogManager();日志的优点这是使用Java 日志的一些优点。

帮助监控程序的流程

帮助捕获可能发生的任何错误

为问题诊断和调试提供支持

Java 断言(Assert)Java 注解(Annotations)

相关文章

beat365最新版
闲鱼上的耳机为什么那么便宜
365bet娱乐场官网注册
狮子和老虎的简笔画画

狮子和老虎的简笔画画

📅 08-03 👀 1802