unclogging-0.1.0.0: app/Main.hs
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Control.Carrier.Unclog (runUnclogging)
import Control.Effect.Unclog.Json qualified as FusedJson
import Control.Effect.Unclog.Text qualified as FusedText
import Control.Monad (replicateM_, void)
import Data.Aeson (Value (String), (.=))
import Data.String (fromString)
import Unclog
import Unclog.IO.Json qualified as IO
import UnliftIO (Concurrently (Concurrently, runConcurrently))
main :: IO ()
main = do
let subs = [colourSubscriber Debug stdout, simpleSubscriber Fatal stderr, fileSubscriber Debug "bla.log"]
withLoggingWithSubscribers subs \logger -> do
let spawnTask (i :: Int) = do
$IO.info logger ["msg" .= String ("I am task " <> fromString (show i))]
replicateM_ 2 do
replicateM_ 2 do
$IO.debug logger ["msg" .= String ("debugging from " <> fromString (show i))]
$IO.warn logger ["warning" .= String ("warning from " <> fromString (show i))]
$IO.fatal logger ["error" .= String ("fatal from " <> fromString (show i))]
void $ runConcurrently $ traverse @[] (Concurrently . spawnTask) [1 .. 5]
runUnclogging subs do
let spawnTask (i :: Int) = do
$FusedJson.info ["msg" .= String ("I am task " <> fromString (show i))]
replicateM_ 2 do
replicateM_ 2 do
$FusedJson.debug ["msg" .= String ("debugging from " <> fromString (show i))]
$FusedJson.warn ["warning" .= String ("warning from " <> fromString (show i))]
$FusedJson.fatal ["error" .= String ("fatal from " <> fromString (show i))]
void $ runConcurrently $ traverse @[] (Concurrently . spawnTask) [1 .. 5]
runUnclogging subs do
let spawnTask (i :: Int) = do
$FusedText.info ("I am task " <> fromString (show i))
replicateM_ 2 do
replicateM_ 2 do
$FusedText.debug ("debugging from " <> fromString (show i))
$FusedText.warn ("warning from " <> fromString (show i))
$FusedText.fatal ("fatal from " <> fromString (show i))
void $ runConcurrently $ traverse @[] (Concurrently . spawnTask) [1 .. 5]