{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Network.AWS.CloudWatchLogs
-- Copyright   : (c) 2013-2016 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- You can use Amazon CloudWatch Logs to monitor, store, and access your log files from EC2 instances, Amazon CloudTrail, or other sources. You can then retrieve the associated log data from CloudWatch Logs using the Amazon CloudWatch console, the CloudWatch Logs commands in the AWS CLI, the CloudWatch Logs API, or the CloudWatch Logs SDK.
--
--
-- You can use CloudWatch Logs to:
--
--     * __Monitor Logs from Amazon EC2 Instances in Real-time__ : You can use CloudWatch Logs to monitor applications and systems using log data. For example, CloudWatch Logs can track the number of errors that occur in your application logs and send you a notification whenever the rate of errors exceeds a threshold you specify. CloudWatch Logs uses your log data for monitoring; so, no code changes are required. For example, you can monitor application logs for specific literal terms (such as "NullReferenceException") or count the number of occurrences of a literal term at a particular position in log data (such as "404" status codes in an Apache access log). When the term you are searching for is found, CloudWatch Logs reports the data to a Amazon CloudWatch metric that you specify.
--
--     * __Monitor Amazon CloudTrail Logged Events__ : You can create alarms in Amazon CloudWatch and receive notifications of particular API activity as captured by CloudTrail and use the notification to perform troubleshooting.
--
--     * __Archive Log Data__ : You can use CloudWatch Logs to store your log data in highly durable storage. You can change the log retention setting so that any log events older than this setting are automatically deleted. The CloudWatch Logs agent makes it easy to quickly send both rotated and non-rotated log data off of a host and into the log service. You can then access the raw log data when you need it.
--
--
--
module Network.AWS.CloudWatchLogs
    (
    -- * Service Configuration
      cloudWatchLogs

    -- * Errors
    -- $errors

    -- ** InvalidParameterException
    , _InvalidParameterException

    -- ** InvalidSequenceTokenException
    , _InvalidSequenceTokenException

    -- ** ResourceAlreadyExistsException
    , _ResourceAlreadyExistsException

    -- ** OperationAbortedException
    , _OperationAbortedException

    -- ** ServiceUnavailableException
    , _ServiceUnavailableException

    -- ** DataAlreadyAcceptedException
    , _DataAlreadyAcceptedException

    -- ** InvalidOperationException
    , _InvalidOperationException

    -- ** ResourceNotFoundException
    , _ResourceNotFoundException

    -- ** LimitExceededException
    , _LimitExceededException

    -- * Waiters
    -- $waiters

    -- * Operations
    -- $operations

    -- ** DescribeDestinations (Paginated)
    , module Network.AWS.CloudWatchLogs.DescribeDestinations

    -- ** CreateExportTask
    , module Network.AWS.CloudWatchLogs.CreateExportTask

    -- ** PutDestination
    , module Network.AWS.CloudWatchLogs.PutDestination

    -- ** DescribeSubscriptionFilters (Paginated)
    , module Network.AWS.CloudWatchLogs.DescribeSubscriptionFilters

    -- ** GetLogEvents
    , module Network.AWS.CloudWatchLogs.GetLogEvents

    -- ** DescribeLogGroups (Paginated)
    , module Network.AWS.CloudWatchLogs.DescribeLogGroups

    -- ** DeleteDestination
    , module Network.AWS.CloudWatchLogs.DeleteDestination

    -- ** FilterLogEvents (Paginated)
    , module Network.AWS.CloudWatchLogs.FilterLogEvents

    -- ** DeleteLogStream
    , module Network.AWS.CloudWatchLogs.DeleteLogStream

    -- ** CreateLogStream
    , module Network.AWS.CloudWatchLogs.CreateLogStream

    -- ** CreateLogGroup
    , module Network.AWS.CloudWatchLogs.CreateLogGroup

    -- ** DescribeExportTasks
    , module Network.AWS.CloudWatchLogs.DescribeExportTasks

    -- ** CancelExportTask
    , module Network.AWS.CloudWatchLogs.CancelExportTask

    -- ** PutSubscriptionFilter
    , module Network.AWS.CloudWatchLogs.PutSubscriptionFilter

    -- ** DeleteLogGroup
    , module Network.AWS.CloudWatchLogs.DeleteLogGroup

    -- ** DeleteSubscriptionFilter
    , module Network.AWS.CloudWatchLogs.DeleteSubscriptionFilter

    -- ** PutLogEvents
    , module Network.AWS.CloudWatchLogs.PutLogEvents

    -- ** DescribeMetricFilters (Paginated)
    , module Network.AWS.CloudWatchLogs.DescribeMetricFilters

    -- ** TestMetricFilter
    , module Network.AWS.CloudWatchLogs.TestMetricFilter

    -- ** PutDestinationPolicy
    , module Network.AWS.CloudWatchLogs.PutDestinationPolicy

    -- ** PutMetricFilter
    , module Network.AWS.CloudWatchLogs.PutMetricFilter

    -- ** DeleteRetentionPolicy
    , module Network.AWS.CloudWatchLogs.DeleteRetentionPolicy

    -- ** DeleteMetricFilter
    , module Network.AWS.CloudWatchLogs.DeleteMetricFilter

    -- ** PutRetentionPolicy
    , module Network.AWS.CloudWatchLogs.PutRetentionPolicy

    -- ** DescribeLogStreams (Paginated)
    , module Network.AWS.CloudWatchLogs.DescribeLogStreams

    -- * Types

    -- ** ExportTaskStatusCode
    , ExportTaskStatusCode (..)

    -- ** OrderBy
    , OrderBy (..)

    -- ** Destination
    , Destination
    , destination
    , dTargetARN
    , dCreationTime
    , dArn
    , dAccessPolicy
    , dDestinationName
    , dRoleARN

    -- ** ExportTask
    , ExportTask
    , exportTask
    , etDestinationPrefix
    , etDestination
    , etStatus
    , etTaskName
    , etTaskId
    , etTo
    , etFrom
    , etLogGroupName
    , etExecutionInfo

    -- ** ExportTaskExecutionInfo
    , ExportTaskExecutionInfo
    , exportTaskExecutionInfo
    , eteiCreationTime
    , eteiCompletionTime

    -- ** ExportTaskStatus
    , ExportTaskStatus
    , exportTaskStatus
    , etsCode
    , etsMessage

    -- ** FilteredLogEvent
    , FilteredLogEvent
    , filteredLogEvent
    , fleIngestionTime
    , fleLogStreamName
    , fleMessage
    , fleTimestamp
    , fleEventId

    -- ** InputLogEvent
    , InputLogEvent
    , inputLogEvent
    , ileTimestamp
    , ileMessage

    -- ** LogGroup
    , LogGroup
    , logGroup
    , lgCreationTime
    , lgMetricFilterCount
    , lgArn
    , lgLogGroupName
    , lgRetentionInDays
    , lgStoredBytes

    -- ** LogStream
    , LogStream
    , logStream
    , lsCreationTime
    , lsUploadSequenceToken
    , lsArn
    , lsFirstEventTimestamp
    , lsLogStreamName
    , lsStoredBytes
    , lsLastIngestionTime
    , lsLastEventTimestamp

    -- ** MetricFilter
    , MetricFilter
    , metricFilter
    , mfCreationTime
    , mfFilterName
    , mfLogGroupName
    , mfFilterPattern
    , mfMetricTransformations

    -- ** MetricFilterMatchRecord
    , MetricFilterMatchRecord
    , metricFilterMatchRecord
    , mfmrExtractedValues
    , mfmrEventNumber
    , mfmrEventMessage

    -- ** MetricTransformation
    , MetricTransformation
    , metricTransformation
    , mtDefaultValue
    , mtMetricName
    , mtMetricNamespace
    , mtMetricValue

    -- ** OutputLogEvent
    , OutputLogEvent
    , outputLogEvent
    , oleIngestionTime
    , oleMessage
    , oleTimestamp

    -- ** RejectedLogEventsInfo
    , RejectedLogEventsInfo
    , rejectedLogEventsInfo
    , rleiTooOldLogEventEndIndex
    , rleiTooNewLogEventStartIndex
    , rleiExpiredLogEventEndIndex

    -- ** SearchedLogStream
    , SearchedLogStream
    , searchedLogStream
    , slsLogStreamName
    , slsSearchedCompletely

    -- ** SubscriptionFilter
    , SubscriptionFilter
    , subscriptionFilter
    , sfCreationTime
    , sfFilterName
    , sfDestinationARN
    , sfLogGroupName
    , sfFilterPattern
    , sfRoleARN
    ) where

import           Network.AWS.CloudWatchLogs.CancelExportTask
import           Network.AWS.CloudWatchLogs.CreateExportTask
import           Network.AWS.CloudWatchLogs.CreateLogGroup
import           Network.AWS.CloudWatchLogs.CreateLogStream
import           Network.AWS.CloudWatchLogs.DeleteDestination
import           Network.AWS.CloudWatchLogs.DeleteLogGroup
import           Network.AWS.CloudWatchLogs.DeleteLogStream
import           Network.AWS.CloudWatchLogs.DeleteMetricFilter
import           Network.AWS.CloudWatchLogs.DeleteRetentionPolicy
import           Network.AWS.CloudWatchLogs.DeleteSubscriptionFilter
import           Network.AWS.CloudWatchLogs.DescribeDestinations
import           Network.AWS.CloudWatchLogs.DescribeExportTasks
import           Network.AWS.CloudWatchLogs.DescribeLogGroups
import           Network.AWS.CloudWatchLogs.DescribeLogStreams
import           Network.AWS.CloudWatchLogs.DescribeMetricFilters
import           Network.AWS.CloudWatchLogs.DescribeSubscriptionFilters
import           Network.AWS.CloudWatchLogs.FilterLogEvents
import           Network.AWS.CloudWatchLogs.GetLogEvents
import           Network.AWS.CloudWatchLogs.PutDestination
import           Network.AWS.CloudWatchLogs.PutDestinationPolicy
import           Network.AWS.CloudWatchLogs.PutLogEvents
import           Network.AWS.CloudWatchLogs.PutMetricFilter
import           Network.AWS.CloudWatchLogs.PutRetentionPolicy
import           Network.AWS.CloudWatchLogs.PutSubscriptionFilter
import           Network.AWS.CloudWatchLogs.TestMetricFilter
import           Network.AWS.CloudWatchLogs.Types
import           Network.AWS.CloudWatchLogs.Waiters

{- $errors
Error matchers are designed for use with the functions provided by
<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
This allows catching (and rethrowing) service specific errors returned
by 'CloudWatchLogs'.
-}

{- $operations
Some AWS operations return results that are incomplete and require subsequent
requests in order to obtain the entire result set. The process of sending
subsequent requests to continue where a previous request left off is called
pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
1000 objects at a time, and you must send subsequent requests with the
appropriate Marker in order to retrieve the next page of results.

Operations that have an 'AWSPager' instance can transparently perform subsequent
requests, correctly setting Markers and other request facets to iterate through
the entire result set of a truncated API operation. Operations which support
this have an additional note in the documentation.

Many operations have the ability to filter results on the server side. See the
individual operation parameters for details.
-}

{- $waiters
Waiters poll by repeatedly sending a request until some remote success condition
configured by the 'Wait' specification is fulfilled. The 'Wait' specification
determines how many attempts should be made, in addition to delay and retry strategies.
-}