java的日志

很多网络服务需要提供日志,用以方便开发者实时跟踪并调试网络服务。这篇博客主要讨论如何使用Apache Log4j为java语言的网络服务编写日志。

为了不污染源代码,Apache提供了一个jar包,名叫Log4j
引用
。这个jar包的主要功能就是为编程者提供一系列方法,方便嵌入源代码记录程序运行的日志。

Log4j有三大元素,Loggers, Appenders和Layouts。Logger是一个类似于system.out.println的方法集合,它主要帮助编程者输出程序运行过程中的各种log情况。有很多级别的Logger可以供我们选择,他们分别是
TRACE,
DEBUG,
INFO,
WARN,
ERROR,
FATAL
这些level供程序在不同线上阶段记录粒度不同的log。log在不同层的记录详细程度不断提高,即TRACE < DEBUG < INFO < WARN < ERROR < FATAL。每一个层级都对应一个java方法。

Appender提供了一系列方法让编程者可以把日志以不同的方法输出,比如标准输出,数据库或者本地文件等等。Layout则提供了一系列方法让编程者可以选择以不同的格式输出日志。

Log4j2是Log4j的升级版,它的运行性能比Log4j要好。详见
引用


想输出log,首先需要配置文件。在网站
引用

上可以找到配置文件的详细说明。配置文件可以是xml文件或者其他格式。如果我们使用xml的话,需要在代码的根目录下创建一个名叫log4j2.xml的文件,在此文件中写入logger,appender和layout的各种要求和这些要求在不同情境下需要的层级。注意,如果是maven工程,这个文件需要放在src/main/resources下面。

配置文件写好之后,我们可以在需要记录日志的程序中加入几行命令,使得日志信息可以根据程序的运行而输出。首先需要在项目中引入log4j2的.jar包,
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

然后在这个程序的类顶部加入以下命令
private static final Logger logger = LogManager.getLogger(x.class);
其中,x.class为这个程序的编译后名称。

之后再在需要输出日志的所有地方添加命令
logger.info(s)或者logger.error(s)等等,其他层级的语句以此类推。其中,s为需要被输出到日志文件中的字符串。

程序运行过后,去哪里找输出的日志文件呢?在log4j2.xml这个配置文件中,有一行语句,
<File name="file" fileName="filePath">
其中在fileName中,就可把filePath替换为日志文件的路径。这样程序运行之后,就可以在相应的本地文件中找到日志记录了。

你可能感兴趣的:(java)