packages feed

fast-logger 2.1.2 → 2.1.3

raw patch · 2 files changed

+45/−13 lines, 2 filesdep ~basedep ~bytestring

Dependency ranges changed: base, bytestring

Files

System/Log/FastLogger.hs view
@@ -1,13 +1,19 @@+-- | This module provides a fast logging system which+--   scales on multicore environments (i.e. +RTS -N\<x\>). {-# LANGUAGE BangPatterns, CPP #-}  module System.Log.FastLogger (   -- * Creating a logger set-    BufSize-  , defaultBufSize-  , LoggerSet+    LoggerSet+  , newFileLoggerSet+  , newStdoutLoggerSet+  , newStderrLoggerSet   , newLoggerSet+  -- * Buffer size+  , BufSize+  , defaultBufSize+  -- * Renewing and removing a logger set   , renewLoggerSet-  -- * Removing a logger set   , rmLoggerSet   -- * Log messages   , LogStr@@ -28,7 +34,7 @@ import Data.Array (Array, listArray, (!)) import Data.Maybe (isJust) import GHC.IO.Device (close)-import GHC.IO.FD (FD(..), openFile, stdout)+import GHC.IO.FD (FD(..), openFile, stderr, stdout) import GHC.IO.IOMode (IOMode(..)) import System.Log.FastLogger.File import System.Log.FastLogger.IO@@ -50,15 +56,29 @@ --   A buffer is prepared for each capability. data LoggerSet = LoggerSet (Maybe FilePath) (IORef FD) (Array Int Logger) +-- | Creating a new 'LoggerSet' using a file.+newFileLoggerSet :: BufSize -> FilePath -> IO LoggerSet+newFileLoggerSet size file = logOpen file >>= newFDLoggerSet size (Just file)++-- | Creating a new 'LoggerSet' using stdout.+newStdoutLoggerSet :: BufSize -> IO LoggerSet+newStdoutLoggerSet size = newFDLoggerSet size Nothing stdout++-- | Creating a new 'LoggerSet' using stderr.+newStderrLoggerSet :: BufSize -> IO LoggerSet+newStderrLoggerSet size = newFDLoggerSet size Nothing stderr++{-# DEPRECATED newLoggerSet "Use newFileLoggerSet etc instead" #-} -- | Creating a new 'LoggerSet'. --   If 'Nothing' is specified to the second argument, --   stdout is used. --   Please note that the minimum 'BufSize' is 1. newLoggerSet :: BufSize -> Maybe FilePath -> IO LoggerSet-newLoggerSet size mfile = do-    fd <- case mfile of-        Nothing   -> return stdout-        Just file -> logOpen file+newLoggerSet size = maybe (newStdoutLoggerSet size) (newFileLoggerSet size)++-- | Creating a new 'LoggerSet' using a FD.+newFDLoggerSet :: BufSize -> Maybe FilePath -> FD -> IO LoggerSet+newFDLoggerSet size mfile fd = do     n <- getNumCapabilities     loggers <- replicateM n $ newLogger (max 1 size)     let arr = listArray (0,n-1) loggers@@ -66,6 +86,8 @@     return $ LoggerSet mfile fref arr  -- | Writing a log message to the corresponding buffer.+--   If the buffer becomes full, the log messages in the buffer+--   are written to its corresponding file, stdout, or stderr. pushLogStr :: LoggerSet -> LogStr -> IO () pushLogStr (LoggerSet _ fref arr) logmsg = do     (i, _) <- myThreadId >>= threadCapability@@ -74,6 +96,8 @@     pushLog fd logger logmsg  -- | Flushing log messages in buffers.+--   This function must be called explicitly when the program is+--   being terminated. flushLogStr :: LoggerSet -> IO () flushLogStr (LoggerSet _ fref arr) = do     n <- getNumCapabilities@@ -83,6 +107,7 @@     flushIt fd i = flushLog fd (arr ! i)  -- | Renewing the internal file information in 'LoggerSet'.+--   This does nothing for stdout and stderr. renewLoggerSet :: LoggerSet -> IO () renewLoggerSet (LoggerSet Nothing     _    _) = return () renewLoggerSet (LoggerSet (Just file) fref _) = do
fast-logger.cabal view
@@ -1,5 +1,5 @@ Name:                   fast-logger-Version:                2.1.2+Version:                2.1.3 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3@@ -10,6 +10,10 @@ Cabal-Version:          >= 1.8 Build-Type:             Simple +Flag UseByteString102+  Description: Use bytestring 0.10.2 or newer+  Default: True+ Library   GHC-Options:          -Wall   Exposed-Modules:      System.Log.FastLogger@@ -20,12 +24,15 @@                         System.Log.FastLogger.Logger   Build-Depends:        base >= 4 && < 5                       , array-                      -- FIXME: blaze-builder should be removed someday-                      , blaze-builder-                      , bytestring                       , directory                       , filepath                       , text++  if flag(UseByteString102)+    Build-Depends:      bytestring >= 0.10.2+  else+    Build-Depends:      blaze-builder+                      , bytestring < 0.10.2  Test-Suite spec     Main-Is:         Spec.hs