我创建了一个日志库,在txt文件上写了一些跟踪,一切正常但我需要在json编码中格式化消息,特别是我有这个函数:
private function Message($level, $mex, $ctx)
{
$date = getTimeStamp($this->settings['dateFormat']);
$message = "[{$date}] [{$level}] {$mex} ";
$message .= PHP_EOL.indent(contextToString($ctx));
return $message.PHP_EOL;
}
现在这是变量值:
$level
=>调试
$mex
=>系统执行
$ctx
=>
[0]=> array(2) { ["name"]=> string(6) "john" ["username"]=> string(6) "foo" } [1]=> array(2) { ["name"]=> string(4) "jack" ["username"]=> string(3) "foo" }
现在在条件中我将上下文附加到带有外部函数的消息,以便更好地格式化消息。 $message
的最终结果是这样的:
`[26-02-2016 16:08:40.392436] [debug] System executed.
0: array( 'name' => 'john', 'username' => 'foo' )
1: array( 'name' => 'jack', 'username' => 'foo' )`
所以一个简单的文件内容是这样的:
[25-02-2016 16:55:09.497203] [exception] SQLSTATE[42S02]: Base table or
view not found: 1146 Table 'test.pdd_userss' doesn't exist
0: array(
'Stack' => 'Stack trace... ""
'ID' => 'john foo'
)
[25-02-2016 16:55:09.497857] [info] Sistema executed.
0: array(
'ID' => 'john foo'
)
[25-02-2016 16:55:13.255716] [info] System done.
我需要做的是解析函数write
private function write($mex)
{
if(fwrite($this->_handle, $mex) === false)
{
throw new RuntimeException('check the file permission');
}
}
执行write
函数后调用Message
函数,首先我格式化消息,然后将其写入文件。现在我需要做的是以json格式编码每条消息,这样我就可以在其他项目中简单地解析整个txt文件,我该怎么做?