用Java登录
Java提供了捕获日志文件的能力。
日志捕获的必要性
我们可能需要捕获应用程序活动的原因有很多。
- 记录程序中可能发生的异常情况或错误
- 获取有关应用程序中发生的事情的信息
可以从日志中获得的详细信息可能会有所不同。有时,我们可能需要有关该问题的大量详细信息,或者有时只需要一些简单的信息。
就像应用程序正在开发和测试阶段一样,我们可能需要捕获很多细节。
日志级别
日志级别控制日志记录的详细信息。它们确定生成日志文件的深度。每个级别都与一个数值相关联,并且有 7 个基本日志级别和 2 个特殊日志级别。
我们每次都需要指定所需的日志级别,我们寻求与日志系统进行交互。基本的日志记录级别是:
Level | Value | Used for |
---|---|---|
SEVERE | 1000 | Indicates some serious failure |
WARNING | 900 | Potential Problem |
INFO | 800 | General Info |
CONFIG | 700 | Configuration Info |
FINE | 500 | General developer info |
FINER | 400 | Detailed developer info |
FINEST | 300 | Specialized Developer Info |
当发生可怕的事情并且应用程序无法进一步继续时,就会发生严重的情况。例如数据库不可用,内存不足。每当用户提供错误的输入或凭据时,都可能会出现警告。
信息供管理员或高级用户使用。它主要表示导致应用程序状态更改的操作。
配置信息可能像应用程序在哪个 CPU 上运行,磁盘和内存空间有多大。 Fine Finer 和 Finest 提供跟踪信息。当我们的应用程序中发生/已经发生的事情时。 FINE 显示其中最重要的消息。 FINER 输出详细的跟踪消息,可能包括记录有关方法进入、退出、抛出异常的调用。 FINEST 提供非常详细的跟踪消息。
此外,还有两个特殊的日志记录级别
OFF | Integer.MAX_VALUE | Capturing nothing |
ALL | Integer.MIN_VALUE | Capturing Everything |
捕获所有内容可能意味着每个字段声明、定义、每个方法调用、每个执行的分配等。
Java的日志系统
日志系统是集中管理的。只有一个应用程序范围的日志管理器管理日志系统的配置和执行实际日志记录的对象。
日志管理器类提供单个全局实例来与日志文件交互。它有一个名为getLogManager的静态方法
记录器类
logger 类提供了用于记录的方法。由于 LogManager 是执行实际日志记录的对象,因此可以使用LogManager的 getLogger 方法访问其实例。
全局记录器实例通过记录器类的静态字段 GLOBAL_LOGGER_NAME 访问。提供它是为了方便随意使用 Logging 包。
// Java program to illustrate logging in Java
// The following code shows a basic example how logging
// works in Java
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.*;
class DemoLogger {
private final static Logger LOGGER =
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
// Get the Logger from the log manager which corresponds
// to the given name
// static so that it is linked to the class and not to
// a particular log instance because Log Manage is universal
public void makeSomeLog()
{
// add some code of your choice here
// Moving to the logging part now
LOGGER.log(Level.INFO, "My first Log Message");
// A log of INFO level with the message "My First Log Message"
}
}
public class GfG {
public static void main(String[] args)
{
DemoLogger obj = new DemoLogger();
obj.makeSomeLog();
// Generating some log messages through the
// function defined above
LogManager lgmngr = LogManager.getLogManager();
// lgmngr now contains a reference to the log manager.
Logger log = lgmngr.getLogger(Logger.GLOBAL_LOGGER_NAME);
// Getting the global application level logger
// from the Java Log Manager
log.log(Level.INFO, "This is a log message");
// Create a log message to be displayed
// The message has a level of Info
}
}
输出;
May 12, 2018 7:56:33 AM DemoLogger makeSomeLog
INFO: My first Log Message
May 12, 2018 7:56:33 AM GfG main
INFO: This is a log message