func NewCloudWatchLogsProvider()

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
}