Skip to content

Commit 92bfc8e

Browse files
authored
Merge pull request #1 from cheopslab/backpack
Try to use backpack.
2 parents 42727d8 + f2140e4 commit 92bfc8e

File tree

9 files changed

+79
-19
lines changed

9 files changed

+79
-19
lines changed

.github/workflows/haskell.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- uses: actions/setup-haskell@v1
1717
with:
1818
ghc-version: '8.10.2'
19-
cabal-version: '3.0'
19+
cabal-version: '3.2'
2020

2121
- name: Cache
2222
uses: actions/cache@v1
@@ -33,7 +33,7 @@ jobs:
3333
- name: Install dependencies
3434
run: |
3535
cabal update
36-
cabal build --only-dependencies --enable-tests --enable-benchmarks
36+
cabal build --only-dependencies --enable-tests --enable-benchmarks cheops-logger
3737
- name: Build
3838
run: cabal build --enable-tests --enable-benchmarks all
3939
- name: Run tests

cheops-logger.cabal

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,40 @@ category: System
5858
build-type: Simple
5959
extra-source-files: ChangeLog.md
6060

61+
62+
library metrics-prometheus
63+
default-language: Haskell2010
64+
visibility: public
65+
exposed-modules:
66+
Cheops.Logger.Internal.Metric.Prometheus
67+
reexported-modules:
68+
Cheops.Logger.Internal.Metric.Prometheus as Cheops.Logger.Internal.Metrics
69+
hs-source-dirs: src
70+
default-extensions:
71+
OverloadedStrings
72+
build-depends:
73+
base >= 4.11 && <5
74+
, prometheus-client ^>= 1.0
75+
, prometheus-client-extra ^>=0.1
76+
, text ^>=1.2
77+
78+
library metrics-noop
79+
visibility: public
80+
exposed-modules:
81+
Cheops.Logger.Internal.Metric.Noop
82+
reexported-modules:
83+
Cheops.Logger.Internal.Metric.Noop as Cheops.Logger.Internal.Metrics
84+
hs-source-dirs: src
85+
default-language: Haskell2010
86+
build-depends:
87+
base >= 4.11 && <5
88+
89+
6190
library
6291
exposed-modules:
6392
Cheops.Logger
6493
Cheops.Logger.Internal.Structured
6594
Cheops.Logger.Internal.Writer
66-
Cheops.Logger.Internal.Metric
6795
default-extensions:
6896
BlockArguments
6997
DerivingStrategies
@@ -79,17 +107,27 @@ library
79107
MagicHash
80108
FlexibleContexts
81109
LambdaCase
82-
build-depends: base >=4.11 && <5
83-
, aeson ^>= 1.5
84-
, bytestring ^>=0.10
85-
, text ^>=1.2
86-
, containers ^>=0.6
87-
, co-log-core ^>=0.2
88-
, co-log-concurrent ^>=0.5
89-
, prometheus-client ^>= 1.0
90-
, prometheus-client-extra ^>=0.1
91-
, string-conv ^>=0.1
92-
, stm ^>=2.5
93-
hs-source-dirs: src
110+
build-depends:
111+
base >=4.11 && <5
112+
, aeson ^>= 1.5
113+
, bytestring ^>=0.10
114+
, text ^>=1.2
115+
, containers ^>=0.6
116+
, co-log-core ^>=0.2
117+
, co-log-concurrent ^>=0.5
118+
, string-conv ^>=0.1
119+
, stm ^>=2.5
120+
signatures: Cheops.Logger.Internal.Metrics
94121
ghc-options: -Wall -Werror
122+
hs-source-dirs: src
95123
default-language: Haskell2010
124+
125+
126+
executable Example
127+
hs-source-dirs: examples
128+
main-is: Main.hs
129+
build-depends:
130+
base >=4.11 && <5,
131+
cheops-logger,
132+
cheops-logger:metrics-prometheus
133+
default-language: Haskell2010

examples/Main

2.49 KB
Binary file not shown.

examples/Main.hi

71 Bytes
Binary file not shown.

examples/Main.o

0 Bytes
Binary file not shown.

src/Cheops/Logger.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
-- @
1313
-- run :: LoggerConfig -> IO ()
1414
-- run config = do
15-
-- 'withLogger' config $ \logger -> do
15+
-- 'withLogger' config $ \initial_logger -> do
16+
-- let ?logger = initial_logger
1617
-- 'logSay' ?logger message1"
1718
-- 'logDebug' ?logger "message2"
1819
-- let ?logger = 'addContext' ('sl' "host" "127.0.0.1")
@@ -56,7 +57,7 @@ module Cheops.Logger
5657
-- $setup
5758
) where
5859

59-
import Cheops.Logger.Internal.Metric
60+
import Cheops.Logger.Internal.Metrics (flushLog, submitLog)
6061
import Cheops.Logger.Internal.Structured
6162
import Cheops.Logger.Internal.Writer
6263
import Colog.Concurrent
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- |
2+
-- Metrics that do not log anything.
3+
module Cheops.Logger.Internal.Metric.Noop
4+
( submitLog
5+
, flushLog
6+
) where
7+
8+
-- | Write metrics when message is submitted.
9+
submitLog :: IO () -> IO ()
10+
{-# INLINE submitLog #-}
11+
submitLog = id
12+
13+
-- | Write metrics when message is flushed.
14+
flushLog :: IO () -> IO ()
15+
{-# INLINE flushLog #-}
16+
flushLog = id

src/Cheops/Logger/Internal/Metric.hs renamed to src/Cheops/Logger/Internal/Metric/Prometheus.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- |
2-
-- Metrics support.
3-
module Cheops.Logger.Internal.Metric
2+
-- Metrics support using prometheus.
3+
module Cheops.Logger.Internal.Metric.Prometheus
44
( submitLog
55
, flushLog
66
) where
@@ -10,13 +10,15 @@ import Prometheus.Metric.WindowGauge as Window
1010

1111
-- | Write metrics when message is submitted.
1212
submitLog :: IO () -> IO ()
13+
{-# INLINE submitLog #-}
1314
submitLog f = do
1415
incCounter metric_submitted_total
1516
f
1617
Window.incGauge metric_in_flight
1718

1819
-- | Write metrics when message is flushed.
1920
flushLog :: IO () -> IO ()
21+
{-# INLINE flushLog #-}
2022
flushLog f = do
2123
f
2224
incCounter metric_written_total
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
signature Cheops.Logger.Internal.Metrics where
2+
flushLog :: IO () -> IO ()
3+
submitLog :: IO () -> IO ()

0 commit comments

Comments
 (0)