in cfn/logging/cloudwatchlogs.go [34:74]
func NewCloudWatchLogsProvider(client cloudwatchlogsiface.CloudWatchLogsAPI, logGroupName string) (io.Writer, error) {
logger := New("internal: ")
// If we're running in SAM CLI, we can return the stdout
if len(os.Getenv("AWS_SAM_LOCAL")) > 0 && len(os.Getenv("AWS_FORCE_INTEGRATIONS")) == 0 {
return stdErr, nil
}
ok, err := CloudWatchLogGroupExists(client, logGroupName)
if err != nil {
return nil, err
}
if !ok {
logger.Printf("Need to create loggroup: %v", logGroupName)
if err := CreateNewCloudWatchLogGroup(client, logGroupName); err != nil {
return nil, err
}
}
logStreamName := ksuid.New()
// need to create logstream
if err := CreateNewLogStream(client, logGroupName, logStreamName.String()); err != nil {
return nil, err
}
provider := &cloudWatchLogsProvider{
client: client,
logGroupName: logGroupName,
logStreamName: logStreamName.String(),
logger: logger,
}
if _, err := provider.Write([]byte("Initialization of log stream")); err != nil {
return nil, err
}
return provider, nil
}