Skip to content

goosedb/bobr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bobr

Bobr is backend agnostic structured logger. There are usage examples below

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE OverloadedStrings #-}
import Bobr.QuickStart.Output.Json
import Bobr.QuickStart.Interface.Implicit 
import Data.ByteString.Builder
import System.IO
import Data.Time

main :: IO ()
main = do
  let logger = mkJsonLogger 
        (defaultJsonLoggerConfig (InsideObject "data")) 
        (hPutBuilder stdout)

  withLogger logger getCurrentTime do 
    debug "kek"
    withLabel ("foo" |> (1 :: Int)) do 
      info "lol"

Produces

{"message":"kek","timestamp":"2023-03-11T16:51:39.229087532Z","severity":"Debug","data":{}}
{"message":"lol","timestamp":"2023-03-11T16:51:39.229150711Z","severity":"Info","data":{"foo":1}}

Sometimes JSON logs aren't very convenient. For example when you are running program on local machine and you aren't able to use some json logs viewer. In such case you can use logger from Console module:

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE OverloadedStrings #-}
import Bobr.QuickStart.Output.Console
import Bobr.QuickStart.Interface.Implicit 
import Data.ByteString.Builder
import System.IO
import Data.Time

main :: IO ()
main = do
  logger <- mkConsoleLogger 
    <$> defaultConsoleLoggerConfig "%X"
    <*> pure (hPutBuilder stdout)

  withLogger logger getCurrentTime do 
    debug "kek"
    withLabel ("foo" |> (1 :: Int)) do 
      info "lol"

Produces

[17:01:50] [Debug] kek
[17:01:50] [Info] #foo=1 lol

About

Backend agnostic structured logger

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published