PHP IDS システム公開では、 Monologを使用してログを MongoDB に保存します。ログの保存方法は次のとおりです。
{
"message": "Executing on data 4f2793132469524563fa9b46207b21ee",
"context": [
],
"level": NumberLong(200),
"level_name": "INFO",
"channel": "audit",
"datetime": "1441721696",
"extra": [
]
}
Mongo で自動削除機能を使用したいのですが、datetime
フィールドを次のように ISOdate 形式で保存する必要があります。
"datetime":ISODate("2015-09-08T17:43:25.678Z")
私はクラスを見て、Mongo
これは秒形式\Expose\Log\Mongo();
で保存する責任がある部分ですdatetime
public function log($level, $message, array $context = array())
{
$logger = new \Monolog\Logger('audit');
try {
$handler = new \Monolog\Handler\MongoDBHandler(
new \MongoClient($this->getConnectString()),
$this->getDbName(),
$this->getDbCollection()
);
} catch (\MongoConnectionException $e) {
throw new \Exception('Cannot connect to Mongo - please check your server');
}
$logger->pushHandler($handler);
$logger->pushProcessor(function ($record) {
$record['datetime'] = $record['datetime']->format('U');
return $record;
});
return $logger->$level($message, $context);
}
$record['datetime'] をこれに変更しました
//$record['datetime'] = $record['datetime']->format('U');
$record['datetime'] = new \MongoDate();;
時間はISOdateとして保存されませんが、これは次のとおりです。
"datetime": "[object] (MongoDate: 0.84500000 1441721683)"
datetime
を ISODate 形式で保存する方法を教えてもらえますか?