Reputation: 767
I'm having an issue logging to Stackdriver from my golang api. My configuration:
fluentd
image. Names as fluentd-cloud-logging-xxx-xxx-xxx-default-pool-nnnnnn.global
stackdriver log. Nothing when I deploy to my k8s cluster though.Code I'm using is like:
api.Logger = func(text string, args ...interface{}) {
ctx := context.Background()
// Sets your Google Cloud Platform project ID.
projectID := "my-project-name"
// Creates a client.
client, err := logging.NewClient(ctx, projectID)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
// Sets the name of the log to write to.
logName := "tried.various.different.names.with.no.luck"
// Selects the log to write to.
logger := client.Logger(logName)
// Sets the data to log.
textL := fmt.Sprintf(text, args...)
// Adds an entry to the log buffer.
logger.Log(logging.Entry{Payload: textL, Severity: logging.Critical})
// Closes the client and flushes the buffer to the Stackdriver Logging
// service.
if err := client.Close(); err != nil {
log.Fatalf("Failed to close client: %v", err)
}
fmt.Printf("Logged: %v\n", textL)
}
I don't need error reporting at the moment as I'm just evaluating - I'd be happy with just sending unstructured text. But it's not clear whether I need to do something like Boris' discussion on error reporting/stack traces from Kubernetes pods just to get that?
Upvotes: 2
Views: 676
Reputation: 1571
Had similar issue with Golang app in Cloud Run.
To find stackdriver logs you have to specify filter resource.type = "project"
in Logs Viewer
Upvotes: 0
Reputation: 36
Log entries created with the Stackdriver logging client does not seem to be categorized under any of the predefined categories, making it very difficult to find in Logs Viewer's basic mode.
Try to access Logs Viewer "advanced filter interface" by converting the query to a advanced filter and create the following filter:
logName:"projects/my-project-name/logs/tried.various.different.names.with.no.luck"
That worked for me at least.
Upvotes: 2