Logging¶

目前支持的日志类型有:file(绝对路径)、log(项目相对路径,会写到项目的resource/log目录下)、syslog(flumelog系统,内部系统,暂无开源计划,如需使用需自行开发)、blackhole(黑洞)。file、log、syslog类型都支持buffer,可以在 log.php 配置 useBuffer=true启用。bufferSize默认值为 4096。

useBuffer 对于性能有较大提升,如果业务允许,请尽量启用。

配置¶

日志的配置文件为resource/config/$ENV/log.php。

API¶

Log是一个工厂类,获取到的日志实例类实现了PsrLogLoggerInterface接口,有以下方法:emergency, alert, critical, error, warning, notice, info, debug, log。

其中log方法是通过传入level的形式调用error, warning, notice等方法。

  1. /**
  2. * 系统不可用,彻底扑街了
  3. *
  4. * @param string $message
  5. * @param array $context
  6. * @return null
  7. */
  8. public function emergency($message, array $context = array());
  9.  
  10. /**
  11. * 必须立即采取措施
  12. *
  13. * 例如:整个网站的故障,数据库不可用等等。
  14. * 这应该触发短信提醒叫醒你。
  15. *
  16. * @param string $message
  17. * @param array $context
  18. * @return null
  19. */
  20. public function alert($message, array $context = array());
  21.  
  22. /**
  23. * 危急情况
  24. *
  25. * 例如:应用程序组件不可用时,意外的异常。
  26. *
  27. * @param string $message
  28. * @param array $context
  29. * @return null
  30. */
  31. public function critical($message, array $context = array());
  32.  
  33. /**
  34. * 不需要立即采取行动,但运行时错误通常应该被记录和监控。
  35. *
  36. * @param string $message
  37. * @param array $context
  38. * @return null
  39. */
  40. public function error($message, array $context = array());
  41.  
  42. /**
  43. * 个别的事件并非错误。
  44. *
  45. * 例如:不赞成使用的API,使用不当的API的,不良的东西,并不一定是错的。
  46. *
  47. * @param string $message
  48. * @param array $context
  49. * @return null
  50. */
  51. public function warning($message, array $context = array());
  52.  
  53. /**
  54. * 正常但是有意义的事件。
  55. *
  56. * @param string $message
  57. * @param array $context
  58. * @return null
  59. */
  60. public function notice($message, array $context = array());
  61.  
  62. /**
  63. * 有趣的事件
  64. *
  65. * 例如:用户登录时,SQL日志。
  66. *
  67. * @param string $message
  68. * @param array $context
  69. * @return null
  70. */
  71. public function info($message, array $context = array());
  72.  
  73. /**
  74. * 详细的调试信息。
  75. *
  76. * @param string $message
  77. * @param array $context
  78. * @return null
  79. */
  80. public function debug($message, array $context = array());
  81.  
  82. /**
  83. * 可以使用任意级别的日志方法
  84. *
  85. * @param mixed $level
  86. * @param string $message
  87. * @param array $context
  88. * @return null
  89. */
  90. public function log($level, $message, array $context = array());

使用示例¶

  1. // 普通日志参数
  2. yield \Log::make('debug')->info('Hello Log!');
  3.  
  4. // 带exception的日志参数
  5. yield \Log::make('trade')->error('I am a exception!', [
  6. 'exception' => new InvalidArgumentException('Nickname shoud be a string !'),
  7. 'other1' => 123,
  8. 'other2' => 'abc',
  9. ]);

原文: http://zanphpdoc.zanphp.io/libs/soa/logging.html