处理器、格式化器和加工程序
处理器
记录日志到文件和syslog
- StreamHandler: 记录日志到任何PHP流中,可以用这个来记录到文件中。
- RotatingFileHandler: 记录到一个文件中,并且每天创建一个日志文件。
这个还会删除老于
$maxFiles
的文件。如果要更高性能的配置,你应该使用 logrotate ;而这个只是一个简单粗暴的解决方案。 - SyslogHandler: 记录日志到syslog.
- ErrorLogHandler: 记录日志到PHP的
error_log()
函数。 - ProcessHandler: 记录日志到任何进程的 标准输入流(STDIN) , 需要指定一个命令(译注:这个命令指shell命令,以启动进程,然后写入该进程的标准输入流)。
发送报警和邮件
- NativeMailerHandler: 使用PHP的
mail()
函数发送邮件。 - SwiftMailerHandler: 使用一个
Swift_Mailer
的实例来发送邮件. - PushoverHandler: 通过 Pushover API 来发送手机推送消息。
- HipChatHandler: 使用 HipChat 的 API 来发送到其内的一个聊天室中。
- FlowdockHandler: 记录日志到Flowdock的账户上。
- SlackbotHandler: 通过 Slackbot 接入钩子来记录日志到一个 Slack 账户上。
- SlackWebhookHandler: 通过 Slack 的 Webhook 来记录日志到一个 Slack 账户上。
- SlackHandler: 通过 Slack 的 API 来记录日志到一个 Slack 账户上。(这个配置比较复杂)
- SendGridHandler: 通过 SendGrid API 来发送邮件。
- MandrillHandler: 通过 Mandrill API,使用一个
Swift_Message
的实例来发送邮件。 - FleepHookHandler: 使用 Webhook 来记录日志到一个 Fleep 的会话中。
- IFTTTHandler: 触发一个 IFTTT 触发器,携带有日志通道、级别名称和消息。
特定日志服务与基于网络的日志
- SocketHandler: 记录日志到 套接字 中, 可以用这个来记录到 UNIX 和 TCP 套接字。参见示例.
- AmqpHandler: 记录日志到一个兼容 amqp 的服务器上。依赖 php-amqp 扩展 (1.0+).
- GelfHandler: 记录日志到一个 Graylog2 服务器上。
- CubeHandler: 记录日志到一个Cube 服务器上。
- RavenHandler: 使用 raven 记录日志到一个Sentry 服务器上。
- ZendMonitorHandler: 记录日志到 Zend Server 上的 Zend Monitor 中。
- NewRelicHandler: 记录日志到一个NewRelic 应用中。
- LogglyHandler: 记录日志到一个Loggly 帐户中。
- RollbarHandler: 记录日志到一个Rollbar 账户中。
- SyslogUdpHandler: 记录日志到一个远程的 Syslogd 服务器上。
- LogEntriesHandler: 记录日志到一个LogEntries 账户中。
- LogmaticHandler: 记录日志到一个Logmatic 账户中。
- SqsHandler: 记录日志到一个 AWS SQS 队列中。
开发环境中的日志
- FirePHPHandler: FirePHP 的处理器,可以生成 FireBug 内的
console
消息。 - ChromePHPHandler: ChromePHP 的处理器, 可以生成 Chrome 内的
console
消息。 - BrowserConsoleHandler: 发送日志到浏览器中的 Javascript
console
的处理器,不需要浏览器扩展。大多数浏览器都支持console
API. - PHPConsoleHandler: PHP Console 的处理器, 可以生成 Chrome 内的
console
消息和弹出的推送通知消息。
记录日志到数据库
- RedisHandler: 记录日志到一个redis 服务器上。
- MongoDBHandler: 通过 Mongo 扩展来记录日志到一个 MongoDB 服务器上。
- CouchDBHandler: 记录日志到一个CouchDB 服务器上。
- DoctrineCouchDBHandler: 通过 Doctrine CouchDB ODM 记录日志到一个CouchDB 服务器上。
- ElasticSearchHandler: 记录日志到一个 Elastic Search 服务器上。
- DynamoDbHandler: 使用 AWS SDK 记录日志到一个 DynamoDB 表中。
封装器/特殊处理器
- 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 才有用。
加工程序
- PsrLogMessageProcessor: 根据 PSR-3 的规则来处理日志记录,将
{foo}
替换成$context['foo']
. - IntrospectionProcessor: 增加日志调用的时候的行号/文件/类/方法信息。
- WebProcessor: 添加当前请求的 URI, 请求方法和客户端 IP 到日志记录中。
- MemoryUsageProcessor: 添加当前的内存使用情况到日志记录中。
- MemoryPeakUsageProcessor: 添加峰值内存使用情况到日志记录中。
- ProcessIdProcessor: 添加进程ID到日志记录中。
- UidProcessor: 添加一个唯一的标识到日志记录中。
- GitProcessor: 添加当前的 git 分支和提交号到日志记录中。
- MercurialProcessor: 添加当前的 hg 分支和提交号到日志记录中。
- TagProcessor: 添加一个预定义的标签数组到日志记录中。
第三方库
第三方的处理器、格式化器和加工程序的列表在wiki上. 如果你发布了一个,你也可以往上面添加一条。