当前位置: 首页 > 面试题库 >

尝试使用Golang在CloudWatch上放置PutLogEvents时获取SerializationException

陈欣荣
2023-03-14
问题内容

我正在尝试使用我的程序实现以下目的:在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

我不确定这里可能出什么问题。任何建议或指示将非常有帮助。

提前致谢。


问题答案:

出现SerializationException的原因是:logevents := make([]*cloudwatchlogs.InputLogEvent, 1) 之后是append,它在slice中创建了第一个空条目。我用替换了代码
logevents := make([]*cloudwatchlogs.InputLogEvent, 0)它得到解决。

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

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



 类似资料:
  • 在Eclipse3.6中运行代码时,我在下面的语句中得到了一个。1: 我读过类似问题的帖子,并尝试过答案,但运气不佳,包括: 使用绝对路径 使用各种相对路径 将gif放入各种文件夹(src、bin、lib等) 创建等待灯。gif- 我当前的图像项目路径是LosOMeter- 有什么想法吗? 堆栈跟踪:

  • 在SDK版本<23的设备上,行和应用程序崩溃! 我的问题是:如果我有try/catch,为什么应用程序会崩溃? 答案如下:为什么我们不必向RuntimeException添加try-catch? 行:指向我的方法

  • 我试图使用docker-dotnet-sonarscanner在本地检查代码覆盖率。 我直到现在的脚步: 19:02:22.429请求和解析“172.20.61.69:9000/API/Server/Version”失败:WebClient请求期间发生异常。 未处理的异常:System.net.WebException:在WebClient请求期间发生异常。--->System.NullRefer

  • 我试图access_token使用这里的说明developers.google.com/accounts/docs/OAuth2InstalledApp(我已经非常努力地遵循),但继续redirect_uri_mismatch错误。我做错了什么? 首先,我使用控制台创建一个已安装的应用程序/其他( 本机应用程序的客户端ID 客户端ID…客户端机密…重定向URI 使用浏览器成功获取授权码 https

  • 我正在阅读有关C中线程的教程并测试了以下代码: 我试图使用gcc和g编译此代码,但我总是遇到编译错误。 使用gcc-pthread thread_test.c: /tmp/ccmpQLyp。o: 在函数std::cout'thread_test.cpp: 你能帮忙吗?我必须做些什么才能让这段代码在Linux和Windows上运行吗?

  • 问题内容: 当我尝试获取我的keyChain值时,它返回一个包含以下内容的字符串: 因此,我尝试使用循环删除“可选”: 但我得到一个错误:NSString没有名为“下标”的成员 KeychainService类: 我只是不想删除str周围的Optional东西,还是有更好的方法呢? 我从以下代码中获取了代码: http://matthewpalmer.net/blog/2014/06/21/exa