camspiers/silverstripe-loggerbridge

提供PSR-3日志记录器(如monolog)和SilverStripe之间的桥梁

安装次数: 61,157

依赖关系: 0

建议者: 0

安全性: 0

星级: 13

关注者: 4

分支: 10

公开问题: 7

类型:silverstripe-module

1.0.1 2018-04-25 17:11 UTC

README

Build Status Latest Stable Version Code Coverage

提供在SilverStripe 3.x中轻松使用PSR-3日志记录器(如monolog)的功能。在SilverStripe 4.x及更高版本中,PSR-3支持已内置到核心系统中,因此该模块不再需要。

安装(需要composer)

$ composer require camspiers/silverstripe-loggerbridge:dev-master

使用方法

  1. 在您的mysite中创建一个配置文件,例如 "mysite/_config/logging.yml"

  2. 设置一个PSR-3日志记录器服务并将其添加到LoggerBridge构造函数

     Injector:
     	Monolog:
     		class: Monolog\Logger
     		constructor:
     			0: App
     			1:
     				- '%$StreamHandler'
     	StreamHandler:
     		class: Monolog\Handler\StreamHandler
     		constructor:
     			0: '../../error.log'
     	LoggerBridge:
     		class: Camspiers\LoggerBridge\LoggerBridge
     		constructor:
     			0: '%$Monolog'
    

更改开发中错误显示的方式

默认情况下,Logger Bridge使用Whoops来显示错误和异常。您可以通过在yml中添加以下内容来切换到使用SilverStripe错误显示:

Injector:
	LoggerBridge:
		properties:
			ErrorReporter: '%$LoggerBridgeDebugErrorReporter'

高级样式设置

此设置提供以下功能:

  • 通过raven客户端(composer require raven/raven)将日志记录到Sentry服务器
    • livetestdev使用一个Sentry项目
  • 对于错误级别error及以上的错误记录到文件
  • 在环境dev下记录到Chrome Logger
    • 错误将在Chrome控制台显示,而不是在网页上显示
  • 在环境dev下记录到FirePHP
    • 错误将在Firebug控制台显示,而不是在网页上显示
  • 同时记录峰值内存使用情况和错误
---
Except:
  environment: live
---
Injector:
  Raven:
    class: Raven_Client
    constructor:
      0: http://someraven.url/1
      
  Monolog:
    class: Monolog\Logger
    constructor:
      0: App
      1:
        - '%$RavenHandler'
        - '%$StreamHandler'
        - '%$ChromePHPHandler'
        - '%$FirePHPHandler'
      2:
        - '%$MemoryPeakUsageProcessor'

---
Only:
  environment: live
---
Injector:
  Raven:
    class: Raven_Client
    constructor:
      0: http://someraven.url/1
  Monolog:
    class: Monolog\Logger
    constructor:
      0: App
      1:
        - '%$RavenHandler'
        - '%$StreamHandler'
      2:
        - '%$MemoryPeakUsageProcessor'

---
Name: logging
---
Injector:
  LoggerBridge:
    class: Camspiers\LoggerBridge\LoggerBridge
    constructor:
      0: '%$Monolog'
      1: false
  RavenHandler:
    class: Monolog\Handler\RavenHandler
    constructor:
      0: '%$Raven'
  StreamHandler:
    class: Monolog\Handler\StreamHandler
    constructor:
      0: '../../error.log'
      1: 400
  ChromePHPHandler:
    class: Monolog\Handler\ChromePHPHandler
  FirePHPHandler:
    class: Monolog\Handler\FirePHPHandler
  MemoryPeakUsageProcessor:
    class: Monolog\Processor\MemoryPeakUsageProcessor

尽可能早地附加日志记录器

SilverStripe目前无法提供替换默认Debug错误处理程序的方法,在数据库连接等之前。但以下补丁将尽可能早地使用Logger Bridge。

要应用补丁,请从3.1.x-dev安装的framework目录运行以下命令。

patch -p1 < framework.patch

framework.patch

diff --git a/core/Core.php b/core/Core.php
index bc3f583..4c9f59e 100644
--- a/core/Core.php
+++ b/core/Core.php
@@ -131,7 +131,7 @@ if(Director::isLive()) {
 /**
  * Load error handlers
  */
-Debug::loadErrorHandlers();
+Injector::inst()->get('LoggerBridge')->registerGlobalHandlers();
 
 
 ///////////////////////////////////////////////////////////////////////////////

单元测试

Logger Bridge具有良好的单元测试覆盖率。要运行单元测试:

$ composer install --dev --prefer-dist
$ phpunit

##许可协议

SilverStripe Logger Bridge是在MIT许可协议下发布的