CodeGym /Java 课程 /模块 3 /Log4j 中的附加程序

Log4j 中的附加程序

模块 3
第 5 级 , 课程 5
可用

附加程序列表

记录器允许您一次将数据保存到多个文件中。这样的输出数据流被称为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_OUTSYSTEM_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 将工作
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION