packages feed

rotating-log-0.1: test/TestRotate.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import           Control.Concurrent
import qualified Data.ByteString.Char8 as B
import           System.RotatingLog

thread :: RotatingLog -> B.ByteString -> Int -> IO ()
thread _log pre n = do
    rotatedWrite _log (B.concat [pre, ": ", B.pack $ show n, "\n"])
    thread _log pre (n+1)

main :: IO ()
main = do
    _log <- mkRotatingLog "foo" 1000000 (archiveFile "logs")
    a <- forkIO $ thread _log "a" 0
    b <- forkIO $ thread _log "b" 0
    c <- forkIO $ thread _log "c" 0
    d <- forkIO $ thread _log "d" 0
    threadDelay 5000000
    killThread a
    killThread b
    killThread c
    killThread d
    putStrLn "done"