on master help sign in
Add prototype compat package with monad-logger
commit87bffcb1df84ab748329097323f830d68196f9fe authorMichael Xavier <michael@michaelxavier.net> dateThu 19 May 2016, 14:47 (10 years ago) parentcd6db37
7 files changed+119
katip-monad-logger-compat/LICENSE+30 katip-monad-logger-compat/README.md+4 katip-monad-logger-compat/Setup.hs+2 katip-monad-logger-compat/changelog.md+4 katip-monad-logger-compat/katip-monad-logger-compat.cabal+42 katip-monad-logger-compat/src/Katip/Instances/MonadLogger.hs+34 stack.yaml+3
katip-monad-logger-compat/LICENSEnew file+30
@@ -0,0 +1,30 @@
1+Copyright (c) 2015-2016, Soostone Inc
2+
3+All rights reserved.
4+
5+Redistribution and use in source and binary forms, with or without
6+modification, are permitted provided that the following conditions are met:
7+
8+ * Redistributions of source code must retain the above copyright
9+ notice, this list of conditions and the following disclaimer.
10+
11+ * Redistributions in binary form must reproduce the above
12+ copyright notice, this list of conditions and the following
13+ disclaimer in the documentation and/or other materials provided
14+ with the distribution.
15+
16+ * Neither the name of Ozgun Ataman nor the names of other
17+ contributors may be used to endorse or promote products derived
18+ from this software without specific prior written permission.
19+
20+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
katip-monad-logger-compat/README.mdnew file+4
@@ -0,0 +1,4 @@
1+# Katip Monad-Logger Compat [![Build Status](https://travis-ci.org/Soostone/katip.svg?branch=master)](https://travis-ci.org/Soostone/katip)
2+
3+Provides an orphaned instance to seamlessly switch existing
4+`monad-logger` code to work with Katip.
katip-monad-logger-compat/Setup.hsnew file+2
@@ -0,0 +1,2 @@
1+import Distribution.Simple
2+main = defaultMain
katip-monad-logger-compat/changelog.mdnew file+4
@@ -0,0 +1,4 @@
1+0.1.0.0
2+==============
3+
4+* Initial release
katip-monad-logger-compat/katip-monad-logger-compat.cabalnew file+42
@@ -0,0 +1,42 @@
1+name: katip-monad-logger-compat
2+synopsis: Provides an orphan MonadLogger instance for Katip
3+description:
4+ Provides an orphan MonadLogger instance to get existing monad-logger code working with Katip.
5+
6+ You should use this if:
7+ 1. You want to switch to Katip but don't want to rewrite existing code right away.
8+ 2. There is third party code outside of your control that you would like to integrate into your Katip log system.
9+
10+ The usual caveats about orphaned instances apply. You should only consider using this if you're working on an application. Library authors should not use this package.
11+version: 0.1.0.0
12+license: BSD3
13+license-file: LICENSE
14+author: Michael Xavier
15+maintainer: michael.xavier@soostone.com
16+copyright: Soostone Inc, 2015-2016
17+category: Data
18+build-type: Simple
19+cabal-version: >=1.10
20+extra-source-files:
21+ README.md
22+ changelog.md
23+tested-with: GHC == 7.8.4, GHC== 7.10.3
24+
25+flag lib-Werror
26+ default: False
27+ manual: True
28+
29+library
30+ exposed-modules:
31+ Katip.Instances.MonadLogger
32+ build-depends:
33+ base >=4.6 && <5
34+ , katip
35+ , monad-logger >= 0.3
36+ , fast-logger
37+ hs-source-dirs: src
38+ default-language: Haskell2010
39+ hs-source-dirs: src
40+ default-language: Haskell2010
41+ if flag(lib-Werror)
42+ ghc-options: -Wall -Werror
katip-monad-logger-compat/src/Katip/Instances/MonadLogger.hsnew file+34
@@ -0,0 +1,34 @@
1+{-# LANGUAGE FlexibleInstances #-}
2+{-# LANGUAGE UndecidableInstances #-}
3+{-# OPTIONS_GHC -fno-warn-orphans #-}
4+module Katip.Instances.MonadLogger
5+ (
6+ ) where
7+
8+
9+-------------------------------------------------------------------------------
10+import qualified Control.Applicative as A
11+import qualified System.Log.FastLogger as FL
12+import qualified Control.Monad.Logger as L
13+-------------------------------------------------------------------------------
14+import qualified Katip as K
15+-------------------------------------------------------------------------------
16+
17+
18+instance (A.Applicative m, Monad m, K.Katip m) => L.MonadLogger m where
19+ monadLoggerLog loc src ll msg =
20+ K.logItem () (K.Namespace [src]) (Just loc) (convertLL ll) (convertMsg msg)
21+
22+
23+-------------------------------------------------------------------------------
24+convertMsg :: (L.ToLogStr msg) => msg -> K.LogStr
25+convertMsg = K.ls . FL.fromLogStr . L.toLogStr
26+
27+
28+-------------------------------------------------------------------------------
29+convertLL :: L.LogLevel -> K.Severity
30+convertLL L.LevelDebug = K.DebugS
31+convertLL L.LevelInfo = K.InfoS
32+convertLL L.LevelWarn = K.WarningS
33+convertLL L.LevelError = K.ErrorS
34+convertLL (L.LevelOther _) = K.ErrorS
stack.yaml+3
@@ -2,6 +2,7 @@ resolver: lts-5.5
22packages:
33 - katip
44 - katip-elasticsearch
5+ - katip-monad-logger-compat
56extra-deps:
67 - bloodhound-0.11.0.0
78 - string-conv-0.1
@@ -18,3 +19,5 @@ flags:
1819 lib-Werror: true
1920 katip-elasticsearch:
2021 lib-Werror: true
22+ katip-monad-logger-compat:
23+ lib-Werror: true