附加程序列表
记录器允许您一次将数据保存到多个文件中。这样的输出数据流被称为appender(来自append)。有很多标准的 appender,所以我们只介绍最流行的:
附加程序 | 描述 | |
---|---|---|
1个 | 安慰 | 将数据打印到控制台 |
2个 | 文件 | 将数据输出到文件 |
3个 | 每日滚动文件 | 输出数据到文件,文件被循环覆盖 |
4个 | 异步 | 允许您将数据异步写入另一个附加程序 |
5个 | 插座 | 将数据写入特定套接字 |
6个 | JDBC | 使用 JDBC 协议将消息写入数据库 |
7 | JPA | 使用 JPA 协议将消息写入数据库 |
8个 | HTTP | 通过 HTTP 协议将事件发送到远程服务器 |
9 | 邮件传输协议 | 将消息存储在缓冲区中,然后将它们作为电子邮件发送 |
所有附加程序的良好文档都在他们的官方网站上
下面我们将考虑其中最受欢迎和最简单的。
ConsoleAppender
最简单的附加程序是ConsoleApender
. 您可能已经猜到了,他只是将消息写入控制台。它有几个对我们来说很有趣的参数:
属性 | ||
---|---|---|
1个 | 姓名 | 附加程序名称 |
2个 | 筛选 | 允许您过滤一些消息 |
3个 | 布局 | 指定输出时消息的格式 |
4个 | 目标 | 指定写入位置:SYTEM_OUT 或SYSTEM_ERR |
配置它非常容易:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
文件追加器
最有用的附加程序是FileAppender
. ConsoleAppender
与他将消息写入文件不同。当您的应用程序在服务器上的某处运行时,这非常有用。它有很多参数,因为 它必须能够在不同的操作系统上写入文件。
但我们只会考虑其中最受欢迎的。
1个 | 姓名 | 指定附加程序的名称 |
2个 | 筛选 | 允许您过滤一些消息 |
3个 | 布局 | 指定输出时消息的格式 |
4个 | 文件名 | 指定写入消息的文件名 |
5个 | 附加 | 如果true ,则消息将添加到旧日志中,如果false - 每次启动应用程序时都会重新创建日志文件。 |
6个 | 缓冲区大小 | 以字节为单位设置缓冲区大小 |
7 | 立即冲洗 | 如果true ,则每条消息实际上立即写入磁盘(没有缓冲区)。日志开始工作缓慢,但这可以避免您在程序崩溃时丢失数据。 |
您已经知道如何很好地处理文件,因此这些设置对您来说并不陌生。配置这样的记录器比控制台记录器更容易:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
RollingFileAppender
最流行的附加程序是RollingFileAppender
. 与它不同的是FileAppender
,它允许您将日志拆分成许多小文件。这对于大型日志非常重要。此外,它还允许您设置在新文件开始写入后如何处理旧文件的规则。
这个 appender 有近百种不同的设置。您可以在链接中找到更多关于它们的信息。
考虑这个 appender 最流行的属性:
属性 | ||
---|---|---|
1个 | 姓名 | 指定附加程序的名称 |
2个 | 筛选 | 允许您过滤一些消息 |
3个 | 布局 | 指定输出时消息的格式 |
4个 | 文件名 | 指定写入消息的文件名 |
5个 | 文件模式 | 指定不再写入的存档文件的命名模式 |
6个 | 政策 | 指定文件应该开始被覆盖的条件 |
7 | 战略 | 描述如何处理旧文件:存档、保留多少天的历史等。 |
这是一个很好的例子:
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
该参数filePattern
指定旧日志归档的模板。还有两种,当触发时,会写入一个新的文件:
TimeBasedTriggeringPolicy
– 如果新的一天开始(当前日期更改),将工作SizeBasedTriggeringPolicy
- 如果文件大小达到 250MB 将工作
GO TO FULL VERSION