in internal/healthchecks/api_check.go [87:129]
func runLoggingCheck(logger logs.StructuredLogger, resource resourcedetector.Resource) error {
ctx := context.Background()
// New Logging Client
logClient, err := logging.NewClient(ctx, resource.ProjectName())
if err != nil {
return err
}
defer logClient.Close()
logger.Infof("logging client was created successfully")
if err := logClient.Ping(ctx); err != nil {
logger.Infof(err.Error())
var apiErr *apierror.APIError
if errors.As(err, &apiErr) {
switch apiErr.Reason() {
case ServiceDisabled:
return LogApiDisabledErr
case AccessTokenScopeInsufficient:
return LogApiScopeErr
case IamPermissionDenied:
return LogApiPermissionErr
}
switch apiErr.GRPCStatus().Code() {
case codes.PermissionDenied:
return LogApiPermissionErr
case codes.Unauthenticated:
return LogApiUnauthenticatedErr
case codes.DeadlineExceeded:
return LogApiConnErr
case codes.Unavailable:
return LogApiConnErr
}
}
if errors.Is(err, context.DeadlineExceeded) {
return LogApiConnErr
}
return err
}
return nil
}