version 0.1.2.0: MTL style logging, fast-logger#4
Conversation
|
|
||
| {-# INLINE logInfo #-} | ||
| logInfo :: HasCallStack => Text -> Text -> m () | ||
| logInfo a = withFrozenCallStack $ logMsg a INFO |
There was a problem hiding this comment.
а ничего, что на Info будет каждый раз вызываться withFrozenCallStack?
There was a problem hiding this comment.
Думаю ничего, но если хочешь могу побенчмаркать.
Без этого никуда, потому что иначе logMsg прочитает стек вот прямо в этой строчке, а не там где вызвали logInfo.
Я брал отсюда: http://hackage.haskell.org/package/co-log-0.3.0.0/docs/src/Colog.Message.html#log
There was a problem hiding this comment.
А верно ди я понимаю, что во всех методах тогда нужно будет тащить HasCallStack?
There was a problem hiding this comment.
Да. Чтобы не тащить руками, я добавил синоним WithBCDLog.
Если написать logMsg прямо в роуте (без кострейнта), выведется правильный модуль и номер строки, но не то название метода. Посмотри в example, там все варианты есть.
There was a problem hiding this comment.
Давайте не будем оставлять опцию использовать MonadBCDLog напрямую без HasCallStack?
There was a problem hiding this comment.
Идея хорошая, но класс все равно надо экспортировать, чтобы инстансы можно было писать. Можно его переименовать так, чтобы не хотелось использовать, MonadLogImpl например.
Я буду переделывать этот после обсуждения вчера с @ozzzzz, если что.
src/System/BCD/Log/Class.hs
Outdated
| @@ -0,0 +1,68 @@ | |||
| {-# LANGUAGE MonoLocalBinds #-} | |||
|
|
|||
| module System.BCD.Log.Class where | |||
There was a problem hiding this comment.
В каждом модуле, кроме модулей
Internalдолжны присутствовать списки экспорта.
Но ладно, я добавлю)
60bce85 to
475bb05
Compare
| -- | ||
| -- All methods in this class preserve call stack information from their call site. | ||
| -- | ||
| class MonadBCDLog m where |
There was a problem hiding this comment.
Предлагаю просто MonadLog назвать
| -- | ||
| class MonadBCDLog m where | ||
| -- | General method to log a message with any 'Level'. | ||
| logMsg |
|
|
||
| {-# INLINE logInfo #-} | ||
| logInfo :: HasCallStack => Text -> Text -> m () | ||
| logInfo a = withFrozenCallStack $ logMsg a INFO |
There was a problem hiding this comment.
Давайте не будем оставлять опцию использовать MonadBCDLog напрямую без HasCallStack?
No description provided.