【问题标题】:Getting SerializationException while trying to PutLogEvents on cloudwatch using golang尝试使用 golang 在 cloudwatch 上放置 LogEvents 时出现 SerializationException
【发布时间】:2019-08-07 09:09:45
【问题描述】:

我正在尝试使用我的程序实现以下目标: 在 aws cloudwatch 上创建日志组 在上述日志组下创建日志流 将日志事件放在上面的日志流下

所有这些都使用 go lang

package main

import (
    "time"
    "fmt"
    "github.com/jcxplorer/cwlogger"
    "github.com/aws/aws-sdk-go/service/cloudwatchlogs"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/aws"
)

func main() {
    sess := session.Must(session.NewSessionWithOptions(session.Options{
        SharedConfigState: session.SharedConfigEnable,
    }))

    svc := cloudwatchlogs.New(sess)
    logGroupName := "my-log-group";
    logStreamName := "my-log-stream";
    logGroupInput := cloudwatchlogs.CreateLogGroupInput{LogGroupName: &logGroupName}
    svc.CreateLogGroup(&logGroupInput);
    logStreamInput := cloudwatchlogs.CreateLogStreamInput{LogGroupName: &logGroupName, LogStreamName: &logStreamName}
    svc.CreateLogStream(&logStreamInput)

    logevents := make([]*cloudwatchlogs.InputLogEvent, 1)

    logevents = append(logevents, &cloudwatchlogs.InputLogEvent{
        Message:   aws.String("Simple log message"),
        Timestamp: aws.Int64(111),
    })

    p := cloudwatchlogs.PutLogEventsInput{LogEvents: logevents, LogGroupName: &logGroupName, LogStreamName: &logStreamName}
    resp, err := svc.PutLogEvents(&p)
    if err != nil {
        panic(err)
    }
    fmt.Print("Next Token: {}", resp.NextSequenceToken)
}

现在,当我运行上面的代码时,它成功创建了日志组和日志流,我可以在 aws cloudwatch 中验证这一点。但由于某种原因,PutLogEvents 失败并出现以下错误:

panic: SerializationException: 
    status code: 400, request id: 0685efcc-47e3-11e9-b528-81f33ec2f468

我不确定这里可能有什么问题。任何建议或方向都会非常有帮助。

提前致谢。

【问题讨论】:

    标签: amazon-web-services go exception amazon-cloudwatch


    【解决方案1】:

    SerializationException 的原因是:logevents := make([]*cloudwatchlogs.InputLogEvent, 1) 然后追加在切片中创建第一个空条目。我将代码替换为 logevents := make([]*cloudwatchlogs.InputLogEvent, 0) 解决了。

    此外,在调试以查找未填充日志的原因时,我发现使用的时间戳值无效。根据 aws 文档,每个事件的时间戳不能早于 14 天,未来也不能超过 2 小时。 这是链接:https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html

    希望对以后遇到类似问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多