mirror of https://github.com/voidlizard/hbs2
Add file logger
This commit is contained in:
parent
c829a6d37c
commit
e411e29246
|
@ -206,6 +206,7 @@ test-suite test
|
||||||
|
|
||||||
other-modules: TestFakeMessaging
|
other-modules: TestFakeMessaging
|
||||||
, TestActors
|
, TestActors
|
||||||
|
, TestFileLogger
|
||||||
-- , TestUniqProtoId
|
-- , TestUniqProtoId
|
||||||
, FakeMessaging
|
, FakeMessaging
|
||||||
, HasProtocol
|
, HasProtocol
|
||||||
|
@ -222,6 +223,7 @@ test-suite test
|
||||||
, bytestring
|
, bytestring
|
||||||
, cache
|
, cache
|
||||||
, containers
|
, containers
|
||||||
|
, directory
|
||||||
, hashable
|
, hashable
|
||||||
, microlens-platform
|
, microlens-platform
|
||||||
, mtl
|
, mtl
|
||||||
|
|
|
@ -17,6 +17,7 @@ module HBS2.System.Logger.Simple
|
||||||
, loggerTr
|
, loggerTr
|
||||||
, toStderr
|
, toStderr
|
||||||
, toStdout
|
, toStdout
|
||||||
|
, toFile
|
||||||
, logPrefix
|
, logPrefix
|
||||||
, SetLoggerEntry
|
, SetLoggerEntry
|
||||||
, module HBS2.System.Logger.Simple.Class
|
, module HBS2.System.Logger.Simple.Class
|
||||||
|
@ -39,6 +40,7 @@ import Lens.Micro.Platform
|
||||||
|
|
||||||
data LoggerType = LoggerStdout
|
data LoggerType = LoggerStdout
|
||||||
| LoggerStderr
|
| LoggerStderr
|
||||||
|
| LoggerFile FilePath
|
||||||
| LoggerNull
|
| LoggerNull
|
||||||
|
|
||||||
data LoggerEntry =
|
data LoggerEntry =
|
||||||
|
@ -78,6 +80,9 @@ toStderr = set loggerType LoggerStderr
|
||||||
toStdout :: SetLoggerEntry
|
toStdout :: SetLoggerEntry
|
||||||
toStdout = set loggerType LoggerStdout
|
toStdout = set loggerType LoggerStdout
|
||||||
|
|
||||||
|
toFile :: FilePath -> SetLoggerEntry
|
||||||
|
toFile filePath = set loggerType (LoggerFile filePath)
|
||||||
|
|
||||||
setLogging :: forall a m . (MonadIO m, HasLogLevel a)
|
setLogging :: forall a m . (MonadIO m, HasLogLevel a)
|
||||||
=> (LoggerEntry -> LoggerEntry)
|
=> (LoggerEntry -> LoggerEntry)
|
||||||
-> m ()
|
-> m ()
|
||||||
|
@ -104,6 +109,10 @@ setLogging f = do
|
||||||
se <- liftIO $ newStdoutLoggerSet 10000 -- FIXME: ??
|
se <- liftIO $ newStdoutLoggerSet 10000 -- FIXME: ??
|
||||||
pure $ set loggerSet se e
|
pure $ set loggerSet se e
|
||||||
|
|
||||||
|
LoggerFile filePath-> do
|
||||||
|
delLogger (Just e)
|
||||||
|
se <- liftIO $ newFileLoggerSet 10000 filePath -- FIXME: ??
|
||||||
|
pure $ set loggerSet se e
|
||||||
|
|
||||||
setLoggingOff :: forall a m . (MonadIO m, HasLogLevel a) => m ()
|
setLoggingOff :: forall a m . (MonadIO m, HasLogLevel a) => m ()
|
||||||
setLoggingOff = do
|
setLoggingOff = do
|
||||||
|
|
|
@ -3,6 +3,7 @@ module Main where
|
||||||
import TestFakeMessaging
|
import TestFakeMessaging
|
||||||
import TestActors
|
import TestActors
|
||||||
import DialogSpec
|
import DialogSpec
|
||||||
|
import TestFileLogger
|
||||||
|
|
||||||
import Test.Tasty
|
import Test.Tasty
|
||||||
import Test.Tasty.HUnit
|
import Test.Tasty.HUnit
|
||||||
|
@ -14,6 +15,7 @@ main =
|
||||||
[
|
[
|
||||||
testCase "testFakeMessaging1" testFakeMessaging1
|
testCase "testFakeMessaging1" testFakeMessaging1
|
||||||
, testCase "testActorsBasic" testActorsBasic
|
, testCase "testActorsBasic" testActorsBasic
|
||||||
|
, testCase "testFileLogger" testFileLogger
|
||||||
, testDialog
|
, testDialog
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
module TestFileLogger where
|
||||||
|
|
||||||
|
import HBS2.System.Logger.Simple
|
||||||
|
import System.Directory
|
||||||
|
import Test.Tasty.HUnit
|
||||||
|
|
||||||
|
logFile :: FilePath
|
||||||
|
logFile = "/tmp/testFileLogger.log"
|
||||||
|
|
||||||
|
debugPrefix :: SetLoggerEntry
|
||||||
|
debugPrefix = toFile logFile . logPrefix "[debug] "
|
||||||
|
|
||||||
|
testFileLogger :: IO ()
|
||||||
|
testFileLogger = do
|
||||||
|
let msg = "Oh hi Mark"
|
||||||
|
|
||||||
|
setLogging @DEBUG debugPrefix
|
||||||
|
debug msg
|
||||||
|
setLoggingOff @DEBUG
|
||||||
|
|
||||||
|
fileContent <- readFile logFile
|
||||||
|
assertEqual "write == read" fileContent ("[debug] " <> msg <> "\n")
|
||||||
|
removeFile logFile
|
Loading…
Reference in New Issue