Java servlet Log4j 教程显示了如何在 Java servlet 中使用 Log4j 进行日志记录。 本教程介绍 Log4j 版本 2。
Java Servlet
Servlet 是 Java 类,可响应特定类型的网络请求-最常见的是 HTTP 请求。 Java servlet 用于创建 Web 应用。 它们在 servlet 容器(例如 Tomcat 或 Jetty)中运行。 现代 Java Web 开发使用在 servlet 之上构建的框架。
Log4j
Apache Log4j 是基于 Java 的日志记录实用程序。 它是 Apache Software Foundation 的项目。 可以通过 Java 代码或在配置文件中配置 Log4j。 配置文件可以 XML,JSON,YAML 或属性文件格式编写。
Log4j 具有三个主要组件:记录器,附加器和布局。 记录器被命名为目标,可捕获捕获日志消息并将其发送到附加程序。 Appender 将日志消息传递到其目的地,例如文件或控制台。 布局用于定义日志消息的格式。
Java servlet 日志记录示例
以下 Web 应用正在使用 Log4j 进行日志记录。 在 Servlet 3.0+应用中,Log4j 可以直接使用。 它在应用部署时自动启动,在应用取消部署时自动关闭。
这是项目结构。 Log4j 配置文件位于src/main/resources/
目录中。
pom.xml
这是 Maven POM 文件。 我们有两个工件:用于服务器小程序的javax.servlet-api
和用于 Web 应用中 Log4j 记录的log4j-web
。 maven-war-plugin
负责收集 Web 应用的所有工件依赖项,类和资源,并将它们打包到 Web 应用存档(WAR)中。
context.xml
在 Tomcat context.xml
文件中,我们定义了上下文路径。 它是 Web 应用的名称。
log4j2.xml
在log4j2.xml
中配置 Log4j。 在我们的示例中,我们选择了 XML 文件格式。
在Properties
标记中,我们设置了日志目录和布局。 布局定义了日志的格式。
模式布局由转换说明符组成。 每个说明符均以百分号开头,后跟可选的格式修饰符和强制转换字符。 %d
输出记录事件的日期。 %t
输出生成日志事件的线程的名称。 %-5p
输出记录事件的级别,级别名称中至少要包含五个字符,并且这些字符必须对齐。 %c
输出发布了记录事件的记录器的名称。 %m
打印与日志记录事件关联的应用消息,%n
是平台相关的行分隔符或多个字符。
追加项是定义日志消息保存位置的对象。 有几个可能的目的地,包括控制台,文件,数据库表或原型。
我们设置日志文件的位置。 我们使用滚动文件附加器,该附加器会自动滚动或归档当前日志文件,并继续记录新文件。 PatternLayout
设置日志消息的布局。 如果存档数量达到十个,则DefaultRolloverStrategy
会删除较旧的存档。
触发策略在Policies
标记中定义。 它们控制发生翻转的条件。 在这里,我们使用两个策略:TimeBasedTriggeringPolicy
和SizeBasedTriggeringPolicy
。 TimeBasedTriggeringPolicy
根据最具体的日期和时间模式开始翻转; 就我们而言,每小时 如果日志文件的大小达到 1 MB,则SizeBasedTriggeringPolicy
开始翻转。
在Loggers
标签中,我们定义了记录器。 它们被称为日志消息目的地。 每个记录器可以配置不同级别的记录。 我们定义一个具有信息记录级别的记录器。 我们将先前定义的滚动文件附加器附加到此记录器。 在additivity
设置为 false 的情况下,日志消息不会传播到其祖先。
MyServlet.java
这是MyServlet
servlet。 它调用服务方法并将文本数据发送回客户端。
我们从LogManager
获取记录器。
我们记录一条信息级别的消息。
我们称为虚拟服务方法。
我们将文本数据发送给客户端。
MyService.java
MyService's
doWork()
方法记录信息级别的消息。
index.html
主页包含一个调用MyServlet
的链接。
这是已记录消息的示例输出。
在本教程中,我们已经在 Java Web 应用中使用 Log4j 完成了一些日志记录。
您可能也对以下相关教程感兴趣: Java Log4j 教程, Java Servlet RESTful 客户端, Java Servlet 上传文件,Java Servlet 复选框教程,Java Servlet 图表教程, Java Servlet HTTP 标头或 Java 教程