{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

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

-- |
-- Module      : Amazonka.MwAA.Types.LoggingConfigurationInput
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MwAA.Types.LoggingConfigurationInput where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MwAA.Types.ModuleLoggingConfigurationInput
import qualified Amazonka.Prelude as Prelude

-- | Defines the Apache Airflow log types to send to CloudWatch Logs.
--
-- /See:/ 'newLoggingConfigurationInput' smart constructor.
data LoggingConfigurationInput = LoggingConfigurationInput'
  { -- | Publishes Airflow DAG processing logs to CloudWatch Logs.
    LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
dagProcessingLogs :: Prelude.Maybe ModuleLoggingConfigurationInput,
    -- | Publishes Airflow scheduler logs to CloudWatch Logs.
    LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
schedulerLogs :: Prelude.Maybe ModuleLoggingConfigurationInput,
    -- | Publishes Airflow task logs to CloudWatch Logs.
    LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
taskLogs :: Prelude.Maybe ModuleLoggingConfigurationInput,
    -- | Publishes Airflow web server logs to CloudWatch Logs.
    LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
webserverLogs :: Prelude.Maybe ModuleLoggingConfigurationInput,
    -- | Publishes Airflow worker logs to CloudWatch Logs.
    LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
workerLogs :: Prelude.Maybe ModuleLoggingConfigurationInput
  }
  deriving (LoggingConfigurationInput -> LoggingConfigurationInput -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LoggingConfigurationInput -> LoggingConfigurationInput -> Bool
$c/= :: LoggingConfigurationInput -> LoggingConfigurationInput -> Bool
== :: LoggingConfigurationInput -> LoggingConfigurationInput -> Bool
$c== :: LoggingConfigurationInput -> LoggingConfigurationInput -> Bool
Prelude.Eq, ReadPrec [LoggingConfigurationInput]
ReadPrec LoggingConfigurationInput
Int -> ReadS LoggingConfigurationInput
ReadS [LoggingConfigurationInput]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LoggingConfigurationInput]
$creadListPrec :: ReadPrec [LoggingConfigurationInput]
readPrec :: ReadPrec LoggingConfigurationInput
$creadPrec :: ReadPrec LoggingConfigurationInput
readList :: ReadS [LoggingConfigurationInput]
$creadList :: ReadS [LoggingConfigurationInput]
readsPrec :: Int -> ReadS LoggingConfigurationInput
$creadsPrec :: Int -> ReadS LoggingConfigurationInput
Prelude.Read, Int -> LoggingConfigurationInput -> ShowS
[LoggingConfigurationInput] -> ShowS
LoggingConfigurationInput -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LoggingConfigurationInput] -> ShowS
$cshowList :: [LoggingConfigurationInput] -> ShowS
show :: LoggingConfigurationInput -> String
$cshow :: LoggingConfigurationInput -> String
showsPrec :: Int -> LoggingConfigurationInput -> ShowS
$cshowsPrec :: Int -> LoggingConfigurationInput -> ShowS
Prelude.Show, forall x.
Rep LoggingConfigurationInput x -> LoggingConfigurationInput
forall x.
LoggingConfigurationInput -> Rep LoggingConfigurationInput x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep LoggingConfigurationInput x -> LoggingConfigurationInput
$cfrom :: forall x.
LoggingConfigurationInput -> Rep LoggingConfigurationInput x
Prelude.Generic)

-- |
-- Create a value of 'LoggingConfigurationInput' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dagProcessingLogs', 'loggingConfigurationInput_dagProcessingLogs' - Publishes Airflow DAG processing logs to CloudWatch Logs.
--
-- 'schedulerLogs', 'loggingConfigurationInput_schedulerLogs' - Publishes Airflow scheduler logs to CloudWatch Logs.
--
-- 'taskLogs', 'loggingConfigurationInput_taskLogs' - Publishes Airflow task logs to CloudWatch Logs.
--
-- 'webserverLogs', 'loggingConfigurationInput_webserverLogs' - Publishes Airflow web server logs to CloudWatch Logs.
--
-- 'workerLogs', 'loggingConfigurationInput_workerLogs' - Publishes Airflow worker logs to CloudWatch Logs.
newLoggingConfigurationInput ::
  LoggingConfigurationInput
newLoggingConfigurationInput :: LoggingConfigurationInput
newLoggingConfigurationInput =
  LoggingConfigurationInput'
    { $sel:dagProcessingLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
dagProcessingLogs =
        forall a. Maybe a
Prelude.Nothing,
      $sel:schedulerLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
schedulerLogs = forall a. Maybe a
Prelude.Nothing,
      $sel:taskLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
taskLogs = forall a. Maybe a
Prelude.Nothing,
      $sel:webserverLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
webserverLogs = forall a. Maybe a
Prelude.Nothing,
      $sel:workerLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
workerLogs = forall a. Maybe a
Prelude.Nothing
    }

-- | Publishes Airflow DAG processing logs to CloudWatch Logs.
loggingConfigurationInput_dagProcessingLogs :: Lens.Lens' LoggingConfigurationInput (Prelude.Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_dagProcessingLogs :: Lens'
  LoggingConfigurationInput (Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_dagProcessingLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
dagProcessingLogs :: Maybe ModuleLoggingConfigurationInput
$sel:dagProcessingLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
dagProcessingLogs} -> Maybe ModuleLoggingConfigurationInput
dagProcessingLogs) (\s :: LoggingConfigurationInput
s@LoggingConfigurationInput' {} Maybe ModuleLoggingConfigurationInput
a -> LoggingConfigurationInput
s {$sel:dagProcessingLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
dagProcessingLogs = Maybe ModuleLoggingConfigurationInput
a} :: LoggingConfigurationInput)

-- | Publishes Airflow scheduler logs to CloudWatch Logs.
loggingConfigurationInput_schedulerLogs :: Lens.Lens' LoggingConfigurationInput (Prelude.Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_schedulerLogs :: Lens'
  LoggingConfigurationInput (Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_schedulerLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
schedulerLogs :: Maybe ModuleLoggingConfigurationInput
$sel:schedulerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
schedulerLogs} -> Maybe ModuleLoggingConfigurationInput
schedulerLogs) (\s :: LoggingConfigurationInput
s@LoggingConfigurationInput' {} Maybe ModuleLoggingConfigurationInput
a -> LoggingConfigurationInput
s {$sel:schedulerLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
schedulerLogs = Maybe ModuleLoggingConfigurationInput
a} :: LoggingConfigurationInput)

-- | Publishes Airflow task logs to CloudWatch Logs.
loggingConfigurationInput_taskLogs :: Lens.Lens' LoggingConfigurationInput (Prelude.Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_taskLogs :: Lens'
  LoggingConfigurationInput (Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_taskLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
taskLogs :: Maybe ModuleLoggingConfigurationInput
$sel:taskLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
taskLogs} -> Maybe ModuleLoggingConfigurationInput
taskLogs) (\s :: LoggingConfigurationInput
s@LoggingConfigurationInput' {} Maybe ModuleLoggingConfigurationInput
a -> LoggingConfigurationInput
s {$sel:taskLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
taskLogs = Maybe ModuleLoggingConfigurationInput
a} :: LoggingConfigurationInput)

-- | Publishes Airflow web server logs to CloudWatch Logs.
loggingConfigurationInput_webserverLogs :: Lens.Lens' LoggingConfigurationInput (Prelude.Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_webserverLogs :: Lens'
  LoggingConfigurationInput (Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_webserverLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
webserverLogs :: Maybe ModuleLoggingConfigurationInput
$sel:webserverLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
webserverLogs} -> Maybe ModuleLoggingConfigurationInput
webserverLogs) (\s :: LoggingConfigurationInput
s@LoggingConfigurationInput' {} Maybe ModuleLoggingConfigurationInput
a -> LoggingConfigurationInput
s {$sel:webserverLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
webserverLogs = Maybe ModuleLoggingConfigurationInput
a} :: LoggingConfigurationInput)

-- | Publishes Airflow worker logs to CloudWatch Logs.
loggingConfigurationInput_workerLogs :: Lens.Lens' LoggingConfigurationInput (Prelude.Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_workerLogs :: Lens'
  LoggingConfigurationInput (Maybe ModuleLoggingConfigurationInput)
loggingConfigurationInput_workerLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
workerLogs :: Maybe ModuleLoggingConfigurationInput
$sel:workerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
workerLogs} -> Maybe ModuleLoggingConfigurationInput
workerLogs) (\s :: LoggingConfigurationInput
s@LoggingConfigurationInput' {} Maybe ModuleLoggingConfigurationInput
a -> LoggingConfigurationInput
s {$sel:workerLogs:LoggingConfigurationInput' :: Maybe ModuleLoggingConfigurationInput
workerLogs = Maybe ModuleLoggingConfigurationInput
a} :: LoggingConfigurationInput)

instance Prelude.Hashable LoggingConfigurationInput where
  hashWithSalt :: Int -> LoggingConfigurationInput -> Int
hashWithSalt Int
_salt LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
workerLogs :: Maybe ModuleLoggingConfigurationInput
webserverLogs :: Maybe ModuleLoggingConfigurationInput
taskLogs :: Maybe ModuleLoggingConfigurationInput
schedulerLogs :: Maybe ModuleLoggingConfigurationInput
dagProcessingLogs :: Maybe ModuleLoggingConfigurationInput
$sel:workerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:webserverLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:taskLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:schedulerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:dagProcessingLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModuleLoggingConfigurationInput
dagProcessingLogs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModuleLoggingConfigurationInput
schedulerLogs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModuleLoggingConfigurationInput
taskLogs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModuleLoggingConfigurationInput
webserverLogs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModuleLoggingConfigurationInput
workerLogs

instance Prelude.NFData LoggingConfigurationInput where
  rnf :: LoggingConfigurationInput -> ()
rnf LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
workerLogs :: Maybe ModuleLoggingConfigurationInput
webserverLogs :: Maybe ModuleLoggingConfigurationInput
taskLogs :: Maybe ModuleLoggingConfigurationInput
schedulerLogs :: Maybe ModuleLoggingConfigurationInput
dagProcessingLogs :: Maybe ModuleLoggingConfigurationInput
$sel:workerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:webserverLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:taskLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:schedulerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:dagProcessingLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ModuleLoggingConfigurationInput
dagProcessingLogs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModuleLoggingConfigurationInput
schedulerLogs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModuleLoggingConfigurationInput
taskLogs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModuleLoggingConfigurationInput
webserverLogs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModuleLoggingConfigurationInput
workerLogs

instance Data.ToJSON LoggingConfigurationInput where
  toJSON :: LoggingConfigurationInput -> Value
toJSON LoggingConfigurationInput' {Maybe ModuleLoggingConfigurationInput
workerLogs :: Maybe ModuleLoggingConfigurationInput
webserverLogs :: Maybe ModuleLoggingConfigurationInput
taskLogs :: Maybe ModuleLoggingConfigurationInput
schedulerLogs :: Maybe ModuleLoggingConfigurationInput
dagProcessingLogs :: Maybe ModuleLoggingConfigurationInput
$sel:workerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:webserverLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:taskLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:schedulerLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
$sel:dagProcessingLogs:LoggingConfigurationInput' :: LoggingConfigurationInput -> Maybe ModuleLoggingConfigurationInput
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DagProcessingLogs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ModuleLoggingConfigurationInput
dagProcessingLogs,
            (Key
"SchedulerLogs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ModuleLoggingConfigurationInput
schedulerLogs,
            (Key
"TaskLogs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ModuleLoggingConfigurationInput
taskLogs,
            (Key
"WebserverLogs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ModuleLoggingConfigurationInput
webserverLogs,
            (Key
"WorkerLogs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ModuleLoggingConfigurationInput
workerLogs
          ]
      )