突然兴起,想总结一下php使用过的类库,当然,是一点一点增加,不会一下子完整哦~
一、php日志类库 Monolog
功能强大,可以把日志发送到文件、socket、邮箱、数据库和各种web services。
可替换性强。
可扩展和自定义很方便。
思考:
如果让我设计,我会考虑提供给用户,
1、可以直接操作的log对象。
2、输入流对象,xxxHandler对象,在log对象和输出介质之间抽象一层出来。 // log对象-----> streamHandler----->实际的xxx.txt文档 因为输出介质有可能是txt文档、mysql数据库、邮件、socket发送等等
//StreamHandler写入磁盘,Mailhandler写入邮件,在Monolog中,xxxHandler对象是堆栈式,流水线处理,即从上到下,先处理MailHandler决定是否邮件发出该日志,完成后,判断是否暂停执行下面的处理,如果
//如果继续,在走到StreamHandler写入磁盘。。。 这种 堆栈式,线性流水解决方案很棒。
3、Monolog里面用的是,观察者模式,往log对象中注入多个监听xxxHandler。
log对象---(观察者模式)------>xxxHandler-------->输出介质
4、但,,如果是我,就建一个抽象类Handler,把具体模式放在Handler类实现,log对象之间操作Hanlder里面的方法,方法实现用具体的StreamHandler或者MailHandler,但这样就不是流水线式从上到下执行的。在
只需要执行一个时,用这种方式会更好。
StreamHandler:把记录写进PHP流,主要用于日志文件。 SyslogHandler:把记录写进syslog。 ErrorLogHandler:把记录写进PHP错误日志。 NativeMailerHandler:使用PHP的mail()函数发送日志记录。 SocketHandler:通过socket写日志。 AmqpHandler:把记录写进兼容amqp协议的服务。 BrowserConsoleHandler:把日志记录写到浏览器的控制台。由于是使用浏览器的console对象,需要看浏览器是否支持。 RedisHandler:把记录写进Redis。 MongoDBHandler:把记录写进Mongo。 ElasticSearchHandler:把记录写到ElasticSearch服务。 BufferHandler:允许我们把日志记录缓存起来一次性进行处理
相关链接:
http://segmentfault.com/a/1190000002775923 //monolog类库详解