Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 有关python日志文件的grok模式的良好资源_Python 2.7_Logging_Logstash_Logstash Grok - Fatal编程技术网

Python 2.7 有关python日志文件的grok模式的良好资源

Python 2.7 有关python日志文件的grok模式的良好资源,python-2.7,logging,logstash,logstash-grok,Python 2.7,Logging,Logstash,Logstash Grok,我想使用logtash解析python日志文件,在哪里可以找到帮助我进行解析的资源。例如: 20131113T052627.769:myapp.py:240:INFO:User Niranjan登录 在这里,我需要捕获时间信息和一些数据信息。我遇到了完全相同的问题/需要。我真的找不到解决这个问题的办法。没有任何可用的grok模式与python日志输出真正匹配,因此我只是继续编写了一个自定义的grok模式,我天真地将它添加到模式/grok模式中 DATESTAMP_PYTHON %{YEAR}-%

我想使用logtash解析python日志文件,在哪里可以找到帮助我进行解析的资源。例如:

20131113T052627.769:myapp.py:240:INFO:User Niranjan登录


在这里,我需要捕获时间信息和一些数据信息。

我遇到了完全相同的问题/需要。我真的找不到解决这个问题的办法。没有任何可用的grok模式与python日志输出真正匹配,因此我只是继续编写了一个自定义的grok模式,我天真地将它添加到
模式/grok模式中

DATESTAMP_PYTHON %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND},%{INT}
我编写的logstash配置提供了很好的字段

  • @时间戳
  • 级别
  • 消息
添加了一些额外的字段,我称之为pymodule,它应该向您显示生成日志项的python模块

我的logstash配置文件如下所示(忽略sincedb_路径这是每次运行logstash时强制它读取整个日志文件的一种简单方式):

请注意

我绝对不能保证这是最好的,甚至是最好的 稍微可以接受的解决方案


我们的Python日志文件的格式略有不同:

[2014-10-08 19:05:02,846] (6715) DEBUG:Our debug message here
因此,我能够创建一个配置文件,而不需要任何特殊模式:

input {
    file {
        path => "/path/to/python.log"
        start_position => "beginning"
    }
}
filter {
    grok {
        match => [
            "message",                                                                                                                                                                                             "\[%{TIMESTAMP_ISO8601:timestamp}\] \(%{DATA:pyid}\) %{LOGLEVEL:level}\:%{GREEDYDATA:logmessage}"                                                                                                  ]
    }
    mutate {
        rename => [ "logmessage", "message" ]
    }
    date {
        timezone => "Europe/London"
        locale => "en"
        match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
}
output {
  elasticsearch {
    host => localhost
  }
  stdout { 
      codec => rubydebug 
  }
}  
这似乎很有效

input {
    file {
        path => "/path/to/python.log"
        start_position => "beginning"
    }
}
filter {
    grok {
        match => [
            "message",                                                                                                                                                                                             "\[%{TIMESTAMP_ISO8601:timestamp}\] \(%{DATA:pyid}\) %{LOGLEVEL:level}\:%{GREEDYDATA:logmessage}"                                                                                                  ]
    }
    mutate {
        rename => [ "logmessage", "message" ]
    }
    date {
        timezone => "Europe/London"
        locale => "en"
        match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
}
output {
  elasticsearch {
    host => localhost
  }
  stdout { 
      codec => rubydebug 
  }
}