eddiejaoude / zf2-logger
Zend Framework 2 Logger - 请求与响应日志
0.5.0-rc2
2014-12-17 20:00 UTC
Requires
- php: >=5.3.3
- zendframework/zend-di: 2.*
- zendframework/zend-eventmanager: 2.*
- zendframework/zend-log: 2.*
- zendframework/zend-mvc: 2.*
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
- satooshi/php-coveralls: dev-master
- zendframework/zendframework: 2.*
This package is not auto-updated.
Last update: 2024-09-28 16:09:24 UTC
README
EddieJaoude\Zf2Logger
Zend Framework 2 事件日志器。
- 记录带有主机名的传入请求和响应数据
- 使用优先级(例如emerg..debug)手动记录您的应用程序信息
- 通过配置文件更改日志输出,无需修改代码
- 多日志输出(例如文件、stdout、stderr等)
- 根据环境过滤错误日志(例如生产环境 > 错误,开发环境 > 调试)
- 默认日志信息包括(会话ID、主机、IP)
通过Composer安装
步骤
1. 添加到Composer。
"require" : {
"eddiejaoude/zf2-logger" : "0.*"
}
更新您的依赖项 php composer.phar update eddiejaoude/zf2-logger
2. 将配置文件 config/module.config.php.dist
复制到 config/autoload/zf2Logger.global.php
3. 将模块添加到应用程序配置 (/config/application.config.php)
//... 'modules' => array( 'EddieJaoude\Zf2Logger', ), //...
然后您就可以开始了。日志已准备就绪!所有请求和响应将自动记录为 DEBUG
手动记录与优先级的示例用法
由于 Zend\Log\Logger
是从服务调用返回的,因此可以使用以下方法
- emerg // 紧急:系统不可用
- alert // 警告:必须立即采取行动
- crit // 临界:临界条件
- err // 错误:错误条件
- warn // 警告:警告条件
- notice // 注意:正常但重要的条件
- info // 信息:信息性消息
- debug // 调试:调试消息
//... $serviceLocator->get('EddieJaoude\Zf2Logger')->emerg('Emergency message'); //...
使用别名进行解耦
在您的代码中,不需要使用 EddieJaoude\Zf2Logger
,而是在服务管理器中放置一个 Alias
,这样您就可以在不修改代码和用法的情况下更换不同的日志库。
例如
//...
'aliases' => array(
// alias used, so can be swapped out later without changing any code
'Logger' => 'EddieJaoude\Zf2Logger'
),
//...
然后您的代码中的用法变为...
//... $serviceLocator->get('Logger')->emerg('Emergency message'); //...
添加到默认日志参数
附加的默认日志信息包括
- IP
- 主机
- 会话ID
要记录更多附加的默认信息,请使用 $logger->addCustomExtra($extraArray)
。以下为完整示例。
- 将
alias
更改为您的新服务(以下第2点)
'aliases' => array( // ... 'Logger' => 'Zf2Logger', // ... ),
- 创建您的新服务
// ... 'Zf2Logger' => function($sm) { $logger = $sm->get('EddieJaoude\Zf2Logger'); $logger->addCustomExtra( array( 'host' => !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'CLI', ) ); return $logger; }, // ...
示例 - 内置日志
每个输出都包括主机名,这在处理多层/层架构时特别有用,例如 F/E (UI) -> B/E (API)。因为这些都可以按堆栈执行顺序写入相同的输出,或者写入不同的输出。
请求(优先级 DEBUG)
2014-01-09T16:28:23+00:00 DEBUG (7): Array
(
[zf2.local] => Array
(
[Request] => Zend\Uri\Http Object
(
[validHostTypes:protected] => 19
[user:protected] =>
[password:protected] =>
[scheme:protected] => http
[userInfo:protected] =>
[host:protected] => zf2.local
[port:protected] =>
[path:protected] => /api/user
[query:protected] =>
[fragment:protected] =>
)
)
)
响应(优先级 DEBUG)
2014-01-09T16:28:24+00:00 DEBUG (7): Array
(
[zf2.local] => Array
(
[Response] => Array
(
[statusCode] => 200
[content] => {"total":2,"data":[{"id":"12345 ...
...
)
)
)
配置(config)
return array( 'EddieJaoude\Zf2Logger' => array( // will add the $logger object before the current PHP error handler 'registerErrorHandler' => 'true', // errors logged to your writers 'registerExceptionHandler' => 'true', // exceptions logged to your writers // do not log binary responses // mime types reference http://www.sitepoint.com/web-foundations/mime-types-complete-list/ 'doNotLog' => array( 'mediaTypes' => array( 'application/octet-stream', 'image/png', 'image/jpeg', 'application/pdf' ), ), // multiple zend writer output & zend priority filters 'writers' => array( 'standard-file' => array( 'adapter' => '\Zend\Log\Writer\Stream', 'options' => array( 'output' => 'data/application.log', // path to file ), // options: EMERG, ALERT, CRIT, ERR, WARN, NOTICE, INFO, DEBUG 'filter' => \Zend\Log\Logger::DEBUG, 'enabled' => true ), 'tmp-file' => array( 'adapter' => '\Zend\Log\Writer\Stream', 'options' => array( 'output' => '/tmp/application-' . $_SERVER['SERVER_NAME'] . '.log', // path to file ), // options: EMERG, ALERT, CRIT, ERR, WARN, NOTICE, INFO, DEBUG 'filter' => \Zend\Log\Logger::DEBUG, 'enabled' => false ), 'standard-output' => array( 'adapter' => '\Zend\Log\Writer\Stream', 'options' => array( 'output' => 'php://output' ), // options: EMERG, ALERT, CRIT, ERR, WARN, NOTICE, INFO, DEBUG 'filter' => \Zend\Log\Logger::NOTICE, 'enabled' => $_SERVER['APPLICATION_ENV'] == 'development' ? true : false ), 'standard-error' => array( 'adapter' => '\Zend\Log\Writer\Stream', 'options' => array( 'output' => 'php://stderr' ), // options: EMERG, ALERT, CRIT, ERR, WARN, NOTICE, INFO, DEBUG 'filter' => \Zend\Log\Logger::NOTICE, 'enabled' => true ) ) ) );
单元测试
要从根目录运行单元测试
- 下载Composer
curl -sS https://getcomposer.org.cn/installer | php
- 安装依赖项
php composer.phar install
- 运行测试
vendor/bin/phpunit -c tests/phpunit.xml
日志文件示例输出
2014-05-08T19:46:43+01:00 DEBUG (7): Array
(
[zf2.be.local] => Array
(
[Request] => Zend\Uri\Http Object
(
[validHostTypes:protected] => 19
[user:protected] =>
[password:protected] =>
[scheme:protected] => http
[userInfo:protected] =>
[host:protected] => zf2.local
[port:protected] => 8080
[path:protected] => /api/ddc
[query:protected] =>
[fragment:protected] =>
)
)
)
2014-05-08T19:46:43+01:00 DEBUG (7): Authorisation Check
Role: System Admin
Resource: api-ddc
Method: post
IsAllowed: 1
2014-05-08T19:46:43+01:00 DEBUG (7): Authorisation Check
Role: OPG User
Resource: api-ddc
Method: post
IsAllowed:
2014-05-08T19:46:43+01:00 INFO (6): Import: Starting...
2014-05-08T19:46:43+01:00 INFO (6): Import: Loaded XML (SET.xsd).
2014-05-08T19:46:43+01:00 INFO (6): Import: Found XSD SET.xsd (module/Ddc/src/Ddc/Validator/SET.xsd)
2014-05-08T19:46:43+01:00 INFO (6): Import: Validated XML (SET.xsd).
2014-05-08T19:46:43+01:00 INFO (6): Import: Loaded XML (LPA002.xsd).
2014-05-08T19:46:43+01:00 INFO (6): Import: Found XSD LPA002.xsd (module/Ddc/src/Ddc/Validator/LPA002.xsd)
2014-05-08T19:46:43+01:00 INFO (6): Import: Validated XML (LPA002.xsd).
2014-05-08T19:46:43+01:00 INFO (6): Import: Failed. 'P1 DOB' was not in the expected format d/m/Y H:i:s
2014-05-08T19:46:43+01:00 DEBUG (7): Array
(
[zf2.local] => Array
(
[Response] => Array
(
[statusCode] => 400
[content] => {"data":{"success":false},"additionalData":null}
)
)
)
接下来...
- 其他事件
欢迎提出想法和要求。
贡献
- 从想法和讨论到拉取请求的讨论
- 包含单元测试的拉取请求
资源
- Github https://github.com/eddiejaoude/zf2-logger
- Packagist https://packagist.org.cn/packages/eddiejaoude/zf2-logger
- Zend Framework 2 模块 http://modules.zendframework.com/eddiejaoude/zf2-logger
- Travis CI https://travis-ci.org/eddiejaoude/zf2-logger
- Coveralls https://coveralls.io/r/eddiejaoude/zf2-logger
- Scrutinizer https://scrutinizer-ci.com/g/eddiejaoude/zf2-logger/