![](/img/trans.png)
[英]Not able to see logs on stackdriver while using logging appender in java
[英]writing logs on appengine java to stackdriver-logging
我有一個在appengine上運行的java應用程序。
我在json結構中記錄我的日志然后我可以在堆棧驅動程序上看到我的日志(如在文檔中 )
package com.foo.bar;
public class MyClass {
private static final Logger log = Logger.getLogger(MyClass.class.getName());
public void myFunc() {
log.info("{msg: 'hello', corId: '123'}");
}
這是我在stackdriver-logging上得到的消息:
com.foo.bar.MyClass myFunc: {msg: 'hello', corId: '123'}
並在日志請求對象中:
protoPayload.line[].logMessage = "com.foo.bar.MyClass myFunc: {msg: 'hello', corId: '123'}"
如何使日志消息只是我正在記錄的消息 - 沒有類前綴: {msg: 'hello', corId: '123'}
protoPayload.line[].logMessage = "{msg: 'hello', corId: '123'}"
我最終通過logstash將日志從stackdriver發送到alasticsearch
在logstash中我解析了我的日志,我還分離了我的日志,將每個日志作為自己的記錄而不是嵌套數組請參閱: 如何將運行在GCP之上的Kubernetes上的pod中的日志發送到elasticsearch / logstash?
我在logstash中的配置用於解析日志:
filter {
if [resource][type] == "gae_app" {
# split the protoPayload.line array, so each log message is a separate entry in Elasticsearch
split {
field => "[protoPayload][line]"
target => "line"
remove_field => [ "httpRequest", "operation", "protoPayload"]
}
# extract `line.logMessage` and `line.severity` fields
mutate {
add_field => {"logMessage" => "%{[line][logMessage]}"}
replace => {"severity" => "%{[line][severity]}"}
remove_field => ["line"]
}
# remove the `com.example.MyClass myFunc: ` prefix from log
grok {
match => { "logMessage" => "^%{DATA}: %{GREEDYDATA:parsedMessage}"}
}
# parse the log message into json, json fields will be located in root
json {
source => "parsedMessage"
target => "jsonPayload"
add_field => {"[jsonPayload][level]" => "%{severity}"}
remove_field => ["parsedMessage", "logMessage"]
}
# uniform GAE logs to the structure of GKE logs
grok {
match => { # check..
"[resource][labels][version_id]" =>
"^%{DATA:[resource][labels][container_name]}-%{GREEDYDATA:[resource][labels][namespace_id]}"}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.