首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Monolog存储日志格式化

Monolog存储日志格式化
EN

Stack Overflow用户
提问于 2015-06-15 17:22:15
回答 1查看 3.2K关注 0票数 1

我希望以正确的json方式编写日志,以便能够在logstash中解析它。

以下是我在config.yml中的独白设置:

代码语言:javascript
复制
monolog:
    channels: ["event"]
    handlers:
...
        eventlog:
            type: stream
            path: %kernel.logs_dir%/event.log
            level: info
            channels: ["event"]
            formatter: monolog.formatter.logstash

服务定义:

代码语言:javascript
复制
<service id="monolog.formatter.logstash" class="Monolog\Formatter\LogstashFormatter">
            <argument>"%%datetime%% %%channel%%.%%level_name%% %%message%%"</argument>
</service>

事件日志记录:

代码语言:javascript
复制
$eventLog = array(
    "userID" => $user->getId(),
    "eventName" => $eventName,
    "eventDetail" => "detail of log event"
);

$this->container->get('monolog.logger.event')->info(json_encode($eventLog));

event.log内容:

代码语言:javascript
复制
{"@timestamp":"2015-06-15T11:02:27.058564+02:00","@source":"MacBook-Pro-de-Peter.local","@fields":{"channel":"event","level":200},"@message":"{\"userID\":278,\"eventName\":\"facebookLogin\",\"eventDetail\":\"multiPageFbk \"}","@tags":["event"],"@type":"\"%datetime% %channel%.%level_name% %message%\""}

不幸的是,我的@message是一个字符串,而不是一个json。有什么办法可以获得一个普通的json吗?另外,如何在@type字段中填入正确的值?

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 16:56:55

我终于找到了答案..

代码语言:javascript
复制
input {
    file {
       codec => "json"
       path => "/Users/Project/app/logs/event.log"
       start_position => "beginning"
    }
}

filter {
    json {
        source => "message"
    }
    json {
        source => "@message"
        target => "event_detail"
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30841581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档