monad-logger-syslog (empty) → 0.1.0.0
raw patch · 6 files changed
+118/−0 lines, 6 filesdep +basedep +bytestringdep +fast-loggersetup-changed
Dependencies added: base, bytestring, fast-logger, hsyslog, monad-logger, monad-logger-syslog, shelly, text, transformers
Files
- LICENSE +20/−0
- README.md +4/−0
- Setup.hs +2/−0
- System/Log/MonadLogger/Syslog.hs +46/−0
- monad-logger-syslog.cabal +34/−0
- test/smoke.hs +12/−0
+ LICENSE view
@@ -0,0 +1,20 @@+The MIT License (MIT)++Copyright (c) 2013 docmunch++Permission is hereby granted, free of charge, to any person obtaining a copy of+this software and associated documentation files (the "Software"), to deal in+the Software without restriction, including without limitation the rights to+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of+the Software, and to permit persons to whom the Software is furnished to do so,+subject to the following conditions:++The above copyright notice and this permission notice shall be included in all+copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ README.md view
@@ -0,0 +1,4 @@+monad-logger-rsyslog+====================++an rsyslog output for monad-logger
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ System/Log/MonadLogger/Syslog.hs view
@@ -0,0 +1,46 @@+{-# LANGUAGE OverloadedStrings #-}+module System.Log.MonadLogger.Syslog where++import Control.Monad.IO.Class (MonadIO ())+import Control.Monad.Logger+import System.Posix.Syslog+import Data.Text (unpack)+import System.Log.FastLogger (LogStr, fromLogStr)+import qualified Data.ByteString.Char8 as BS8++runSyslogLoggingT :: MonadIO m => LoggingT m a -> m a+runSyslogLoggingT = (`runLoggingT` syslogOutput)++-- TODO: useSyslog allows giving a source name and should be more efficient+-- But it assumes IO+-- Perhaps should use mmorph to generalize IO to MonadIO+{-+runSyslogLoggingT :: MonadIO m => String -> LoggingT m a -> m a+runSyslogLoggingT source action =+ useSyslog source (runLoggingT action syslogOutput)+-}+++syslogOutput :: Loc+ -> LogSource+ -> LogLevel+ -> LogStr+ -> IO ()+syslogOutput l s level msg =+ syslog (levelToPriority level) $+ BS8.unpack $ fromLogStr $+ defaultLogStr l s level msg+++levelToPriority :: LogLevel -> Priority+levelToPriority LevelDebug = Debug+levelToPriority LevelInfo = Info+levelToPriority LevelWarn = Warning+levelToPriority LevelError = Error+levelToPriority (LevelOther level) =+ case level of+ "Emergency" -> Emergency+ "Alert" -> Alert+ "Critical" -> Critical+ "Notice" -> Notice+ _ -> error $ "unknown log level: " ++ unpack level
+ monad-logger-syslog.cabal view
@@ -0,0 +1,34 @@+name: monad-logger-syslog+version: 0.1.0.0+synopsis: rsyslog output for monad-logger+description: rsyslog output for monad-logger+homepage: https://github.com/docmunch/monad-logger-rsyslog+license: MIT+license-file: LICENSE+author: Greg Weber+maintainer: greg@gregweber.info+category: System+build-type: Simple+extra-source-files: README.md+cabal-version: >=1.10++library+ default-language: Haskell2010+ exposed-modules: System.Log.MonadLogger.Syslog+ ghc-options: -Wall+ build-depends: base >=4.6 && <4.7+ , monad-logger >= 0.3.4.0+ , fast-logger >= 2.1.0+ , hsyslog+ , transformers+ , text+ , bytestring++test-suite smoke+ default-language: Haskell2010++ type: exitcode-stdio-1.0+ hs-source-dirs: test+ main-is: smoke.hs++ build-depends: base, monad-logger, monad-logger-syslog, shelly
+ test/smoke.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE OverloadedStrings #-}+import Control.Monad.Logger+import System.Log.MonadLogger.Syslog+import Shelly++main :: IO ()+main = do+ let logFile = "/var/log/syslog"+ runSyslogLoggingT $ logDebugN "HELLO!"+ shellyNoDir $+ whenM (test_e logFile) $+ cmd "tail" logFile