【发布时间】:2013-03-20 07:17:30
【问题描述】:
我正在尝试获取有关请求的一些信息,结果应该放在 XML 文件中。 我正在使用以下元素:
- logEntry(root)(默认)
- 时间戳(默认)(字符串)时间戳
- 优先级(默认)(字符串)优先级
- priorityName(默认)(字符串)优先级名称
- 消息(默认)(字符串)消息
- uniqueId(新)(字符串)唯一标识
- 方法(新)(字符串)命名空间\Class::MethodName()
- args (new) (string) base64 编码,序列化 func_get_args();
应该是:
<logEntry><timestamp>2013-03-29T15:47:41+01:00</timestamp><priority>6</priority><priorityName>INFO</priorityName><message>Called</message><uniqueId>564fg56d4g5d4fg5f4g56fg465dfg</uniqueId><method>\Namespace\Controller::methodName</method><args>aa5abc8d6efeabcd7f67cb6a7df6bac5ba7a5fd7a5d6bac67a5bf6abcbb408f098=</args></logEntry>
我读过的文档: http://zf2.readthedocs.org/en/latest/modules/zend.log.formatters.html
无效的代码:
$writer = new \Zend\Log\Writer\Stream(getenv('LOG_FILE_LOCATION'));
$formatter = new \Zend\Log\Formatter\Xml('logEntry', array(
'timestamp' => 'timestamp',
'priority' => 'priority',
'priorityName' => 'priorityName',
'message' => 'message',
'uniqueId' => 'uniqueId',
'method' => 'method',
'args' => 'args',
));
$writer->setFormatter($formatter);
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info('Started', array(
'uniqueId' => $this->createGuid(),
'method' => __METHOD__,
'args' => serialize(array(get_class($e))),
));
错误: 注意:未定义索引:/var/www/library/Zend/Log/Formatter/Xml.php 168 行中的 uniqueId
Xml.php 代码 https://github.com/zendframework/zf2/blob/master/library/Zend/Log/Formatter/Xml.php#L168
$event[$fieldKey] 是问题所在。 $fieldKey 仅存在于 $event['extra'][$fieldKey] 中。 $this->elementMap 是平面的(没有添加额外的额外数组)。
Array
(
[timestamp] => timestamp
[priority] => priority
[priorityName] => priorityName
[message] => message
[uniqueId] => uniqueId
[method] => method
[args] => args
)
我做错了什么?
我认为这是一个 ZF2 错误...阅读 Github 上的代码时,我无法找到和检测额外的字段和键...你们怎么看?
【问题讨论】:
-
您的 Github 链接导致 404。没有代码很难诊断问题。
标签: xml logging zend-framework2 zend-log