处理器、格式化器和加工程序

处理器

记录日志到文件和syslog

  • StreamHandler: 记录日志到任何PHP流中,可以用这个来记录到文件中。
  • RotatingFileHandler: 记录到一个文件中,并且每天创建一个日志文件。 这个还会删除老于 $maxFiles 的文件。如果要更高性能的配置,你应该使用 logrotate ;而这个只是一个简单粗暴的解决方案。
  • SyslogHandler: 记录日志到syslog.
  • ErrorLogHandler: 记录日志到PHP的 error_log() 函数。
  • ProcessHandler: 记录日志到任何进程的 标准输入流(STDIN) , 需要指定一个命令(译注:这个命令指shell命令,以启动进程,然后写入该进程的标准输入流)。

发送报警和邮件

特定日志服务与基于网络的日志

开发环境中的日志

记录日志到数据库

封装器/特殊处理器

  • FingersCrossedHandler: 一个非常有意思的封装器。它接收一个日志服务实例作为参数,并且会把所有级别的日志都积累下来 直到有一条记录超过了预定义的严重程度级别。那个时候,可以将发送所有的记录,包括那些低级别 的,到它所封装的那个日志服务实例中。这意味着除非发生了一个错误,否则你将不会在日志中看到 任何东西;然而当错误发生的时候,你则可以看到所有的信息,包括调试和信息基本的记录。这样, 当且仅当你需要的时候,它提供给了你所有需要的信息。
  • DeduplicationHandler: 如果当严重错误发生时你发送推送消息或者邮件的,这个会很有用。它接受一个日志服务实例作为 参数,并会积累所有级别的日志记录直到请求结束(或者flush()被调用)。那时,它会将所有 日志记录都发送到那个封装的日志服务实例中,额外的前提是这些记录在给定的时间段(默认60秒) 内是唯一的。这个的主要用途是防止如数据库挂了的严重错误导致了一堆推送消息。添加这个处理 器可以减少推送消息的数量到一个可控程度。

  • WhatFailureGroupHandler: 这个处理器继承了 GroupHandler 并忽略了每个子处理器抛出的异常。这允许你忽略一些问 题,如一个远程的TCP连接挂了但你不希望你的整个应用宕掉,而希望继续让其他处理器处理日 志。

  • BufferHandler: 这个处理器会缓存所有的日志记录,直到它接收到 close() 调用,然后它会调用一次它所封装的 日志服务实例上的 handleBatch() 方法。这在这种情况下非常有用:一次请求想要只发送一封 邮件,里面包含了所有的日志记录 — 而非每条日志记录都发送一封邮件。
  • GroupHandler: 这个处理器把其他处理器组合起来。每条接收到的记录都将发送给所有配置在其内的处理器中。
  • FilterHandler: 这个处理器只允许给定级别的日志记录透传到所封装了的处理器中。
  • SamplingHandler: 封装另外的处理器,并允许你对日志进行采样,以便你只想存所有日志中的某些(而非全部)。
  • NoopHandler: 这个处理器对任何东东都不采取任何动作。它不会停止遍历剩余的栈(中的处理器)。 这个在测试的时候非常有用,还有在想要覆盖掉一个配置以禁用某个处理器的时候。
  • NullHandler: 它能处理的任何记录都将被丢弃。这个可以用来放在一个已经存在的处理器栈的栈顶上,以便临时禁用之。
  • PsrHandler: 可以用来转发日志到一个已经存在了的 PSR-3 日志服务实例中。
  • TestHandler: 测试用的,它会记录所有信息,而且有可以读取出这些信息的访问器。
  • HandlerWrapper: 一个简单的处理器的封装器。你可以通过集成它以便更方便地创建你自己的封装器。

格式化器

  • LineFormatter: 将日志记录格式化成一行字符串。
  • HtmlFormatter: 用来将日志记录格式化成易读的HTML表格,主要适合发邮件。
  • NormalizerFormatter: 将 objects/resources 格式化成字符串,以便更方便地对其进行序列化/编码。
  • ScalarFormatter: 用来将日志记录格式化到一个关联数组中,里面都是放标量值。
  • JsonFormatter: 将日志记录编码成JSON.
  • WildfireFormatter: 用来将日志记录格式化成 Wildfire/FirePHP 协议格式,只有对 FirePHPHandler 才有用。
  • ChromePHPFormatter: 用来将日志格式化成 ChromePHP 格式,只有对 ChromePHPHandler 才有用。
  • GelfMessageFormatter: 用来将日志记录格式化成 Gelf 消息实例,只有对 GelfHandler 才有用。
  • LogstashFormatter: 用来将日志记录格式化成 logstash 事件JSON格式,对 这里 列出的处理器有用。
  • ElasticaFormatter: 用来将日志格式化成 Elastica\Document 对象,只有 ElasticSearchHandler 中才有用。
  • LogglyFormatter: 用来将日志格式化成 Loggly 消息,只有对 LogglyHandler 才有用。
  • FlowdockFormatter: 用来将日志格式化成 Flowdock 消息,只有对 FlowdockHandler 才有用。
  • MongoDBFormatter: 将 \DateTime 实例转换成 \MongoDate 并递归地将对象转换成数组,只有对 MongoDBHandler 才有用。
  • LogmaticFormatter: 用来将日志格式化成 Logmatic 消息,只有对 LogmaticHandler 才有用。

加工程序

第三方库

第三方的处理器、格式化器和加工程序的列表在wiki上. 如果你发布了一个,你也可以往上面添加一条。

使用说明 | 工具类