packages feed

fast-logger 2.4.1 → 2.4.2

raw patch · 6 files changed

+98/−23 lines, 6 filesdep +Win32dep ~bytestringPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: Win32

Dependency ranges changed: bytestring

API changes (from Hackage documentation)

- System.Log.FastLogger.File: log_backup_number :: FileLogSpec -> Int
- System.Log.FastLogger.File: log_file :: FileLogSpec -> FilePath
- System.Log.FastLogger.File: log_file_size :: FileLogSpec -> Integer
+ System.Log.FastLogger.File: [log_backup_number] :: FileLogSpec -> Int
+ System.Log.FastLogger.File: [log_file] :: FileLogSpec -> FilePath
+ System.Log.FastLogger.File: [log_file_size] :: FileLogSpec -> Integer

Files

ChangeLog.md view
@@ -1,3 +1,22 @@+## 2.4.2++* Fixing a buf of long log messages [#80](https://github.com/kazu-yamamoto/logger/pull/80)+* Log rotation support for Windows [#79](https://github.com/kazu-yamamoto/logger/pull/79)+* Unsupporting GHC 7.4.++## 2.4.1++* Restore compatibility with bytestring < 0.10+* Mark fast-logger modules as Safe/Trustworth [#68](https://github.com/kazu-yamamoto/logger/pull/68)++## 2.4.0++* Providing pushLogStrLn. [#64](https://github.com/kazu-yamamoto/logger/pull/64)++## 2.3.1++* No changes.+ ## 2.3.0  * Move from blaze-builder to `Data.ByteString.Builder` [#55](https://github.com/kazu-yamamoto/logger/pull/55)
System/Log/FastLogger.hs view
@@ -1,6 +1,6 @@ -- | This module provides a fast logging system which --   scales on multicore environments (i.e. +RTS -N\<x\>).-{-# LANGUAGE BangPatterns, CPP #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  module System.Log.FastLogger (@@ -38,23 +38,15 @@ import Control.Monad (when, replicateM) import Data.Array (Array, listArray, (!), bounds) import Data.Maybe (isJust)-import GHC.IO.Device (close)-import GHC.IO.FD (FD(..), openFile, stderr, stdout)-import GHC.IO.IOMode (IOMode(..)) import System.Log.FastLogger.File import System.Log.FastLogger.IO+import System.Log.FastLogger.FileIO import System.Log.FastLogger.IORef import System.Log.FastLogger.LogStr import System.Log.FastLogger.Logger  ---------------------------------------------------------------- --- | Opening a log file.-logOpen :: FilePath -> IO FD-logOpen file = fst <$> openFile file AppendMode False------------------------------------------------------------------- -- | A set of loggers. --   The number of loggers is the capabilities of GHC RTS. --   You can specify it with \"+RTS -N\<x\>\".@@ -63,15 +55,15 @@  -- | Creating a new 'LoggerSet' using a file. newFileLoggerSet :: BufSize -> FilePath -> IO LoggerSet-newFileLoggerSet size file = logOpen file >>= newFDLoggerSet size (Just file)+newFileLoggerSet size file = openFileFD file >>= newFDLoggerSet size (Just file)  -- | Creating a new 'LoggerSet' using stdout. newStdoutLoggerSet :: BufSize -> IO LoggerSet-newStdoutLoggerSet size = newFDLoggerSet size Nothing stdout+newStdoutLoggerSet size = getStdoutFD >>= newFDLoggerSet size Nothing  -- | Creating a new 'LoggerSet' using stderr. newStderrLoggerSet :: BufSize -> IO LoggerSet-newStderrLoggerSet size = newFDLoggerSet size Nothing stderr+newStderrLoggerSet size = getStderrFD >>= newFDLoggerSet size Nothing  {-# DEPRECATED newLoggerSet "Use newFileLoggerSet etc instead" #-} -- | Creating a new 'LoggerSet'.@@ -139,9 +131,9 @@ renewLoggerSet :: LoggerSet -> IO () renewLoggerSet (LoggerSet Nothing     _    _ _) = return () renewLoggerSet (LoggerSet (Just file) fref _ _) = do-    newfd <- logOpen file+    newfd <- openFileFD file     oldfd <- atomicModifyIORef' fref (\fd -> (newfd, fd))-    close oldfd+    closeFD oldfd  -- | Flushing the buffers, closing the internal file information --   and freeing the buffers.@@ -152,7 +144,7 @@     let nums = [l .. u]     mapM_ (flushIt fd) nums     mapM_ freeIt nums-    when (isJust mfile) $ close fd+    when (isJust mfile) $ closeFD fd   where     flushIt fd i = flushLog fd (arr ! i)     freeIt i = do
+ System/Log/FastLogger/FileIO.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE CPP #-}++module System.Log.FastLogger.FileIO where++import Foreign.Ptr (Ptr)+import Data.Word (Word8)++#ifdef mingw32_HOST_OS+import System.Win32.Types (HANDLE)+import System.Win32.File+import Graphics.Win32.Misc (getStdHandle, sTD_OUTPUT_HANDLE, sTD_ERROR_HANDLE)+import Data.Bits ((.|.))++type FD = HANDLE++closeFD :: FD -> IO ()+closeFD = closeHandle++openFileFD :: FilePath -> IO FD+openFileFD f = createFile f+                         (gENERIC_READ .|. gENERIC_WRITE)+                         (fILE_SHARE_READ .|. fILE_SHARE_DELETE)+                         Nothing+                         oPEN_ALWAYS+                         fILE_ATTRIBUTE_NORMAL+                         Nothing++getStderrFD :: IO FD+getStderrFD = getStdHandle sTD_ERROR_HANDLE++getStdoutFD :: IO FD+getStdoutFD = getStdHandle sTD_OUTPUT_HANDLE++writeRawBufferPtr2FD :: FD -> Ptr Word8 -> Int -> IO Int+writeRawBufferPtr2FD h bf len = fromIntegral `fmap` win32_WriteFile h bf (fromIntegral len) Nothing++#else++import GHC.IO.Device (close)+import qualified GHC.IO.FD as POSIX (FD(..))+import GHC.IO.FD (openFile, stderr, stdout,  writeRawBufferPtr)+import GHC.IO.IOMode (IOMode(..))++type FD = POSIX.FD++closeFD :: FD -> IO ()+closeFD = close++openFileFD :: FilePath -> IO FD+openFileFD f = fst `fmap` openFile f AppendMode False++getStderrFD :: IO FD+getStderrFD = return stderr++getStdoutFD :: IO FD+getStdoutFD = return stdout++writeRawBufferPtr2FD :: FD -> Ptr Word8 -> Int -> IO Int+writeRawBufferPtr2FD fd bf len = fromIntegral `fmap` writeRawBufferPtr "write" fd bf 0 (fromIntegral len)++#endif
System/Log/FastLogger/IO.hs view
@@ -38,6 +38,5 @@              More minSize writer'                | size < minSize -> error "toBufIOWith: More: minSize"                | otherwise      -> loop writer'-             Chunk (PS fptr off siz) writer'-               | len == 0  -> loop writer' -- flushing-               | otherwise -> withForeignPtr fptr $ \ptr -> io (ptr `plusPtr` off) siz+             Chunk (PS fptr off siz) writer' ->+               withForeignPtr fptr $ \ptr -> io (ptr `plusPtr` off) siz >> loop writer'
System/Log/FastLogger/Logger.hs view
@@ -11,7 +11,7 @@ import Control.Concurrent (MVar, newMVar, withMVar) import Control.Monad (when) import Foreign.Ptr (plusPtr)-import GHC.IO.FD (FD, writeRawBufferPtr)+import System.Log.FastLogger.FileIO import System.Log.FastLogger.IO import System.Log.FastLogger.LogStr import System.Log.FastLogger.IORef@@ -77,6 +77,6 @@ write fd buf len' = loop buf (fromIntegral len')   where     loop bf !len = do-        written <- writeRawBufferPtr "write" fd bf 0 (fromIntegral len)+        written <- writeRawBufferPtr2FD fd bf len         when (written < len) $             loop (bf `plusPtr` fromIntegral written) (len - written)
fast-logger.cabal view
@@ -1,5 +1,5 @@ Name:                   fast-logger-Version:                2.4.1+Version:                2.4.2 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3@@ -16,10 +16,11 @@   Exposed-Modules:      System.Log.FastLogger                         System.Log.FastLogger.File   Other-Modules:        System.Log.FastLogger.IO+                        System.Log.FastLogger.FileIO                         System.Log.FastLogger.IORef                         System.Log.FastLogger.LogStr                         System.Log.FastLogger.Logger-  Build-Depends:        base >= 4.4 && < 5+  Build-Depends:        base >= 4.5 && < 5                       , array                       , auto-update >= 0.1.2                       , bytestring@@ -27,6 +28,9 @@                       , directory                       , filepath                       , text+  if os(windows)+    Build-Depends:+                      Win32  Test-Suite spec     Main-Is:         Spec.hs