packages feed

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 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