Comments (4)
I suggest you not pass anything side-effecting / non-referentially transparent to the logger methods, and you won't see any differences here.
Fair enough. Thanks!
from log4cats.
I doubt that passing these arguments by name into the String Interpolation makes much sense there, since the call of scala.StringContext#s
would lead to macro expansion (or even that call might be replaced to something else by scalac accordingly to scaladoc).
from log4cats.
I was stumbling upon this when rewriting logger.debug(...)
to debug"..."
and got very different results, for example
def run: IO[Unit] =
doSomething[IO] *> debug"finished at: ${Clock.systemUTC().instant()}"
logs the time before doSomething
runs vs.
def run: IO[Unit] =
doSomething[IO] *> logger.debug(s"finished at: ${Clock.systemUTC().instant()}")
which logs the time after doSomething
is finished.
Another example:
def run: IO[Unit] =
doSomething[IO] *> debug"this may fail: ${1 / 0}".recover(_ => ())
does not only not recover from a failing log message, but prevents doSomething
from running at all vs.
def run: IO[Unit] =
doSomething[IO] *> logger.debug(s"this may fail: ${1 / 0}").recover(_ => ())
which recovers from a failing log message (after running doSomething
).
From a users perspective the deviation of behaviour seems rather odd. Shouldn't the syntax styles be usable interchangeably? I don't know about Scala macros, but the workaround from above worked for me so I thought why not post it here.
from log4cats.
Again, one cannot pass by-name arguments to the scala.StringContext#s
since its implementation is a def-macro. I suggest you not pass anything side-effecting / non-referentially transparent to the logger methods, and you won't see any differences here.
from log4cats.
Related Issues (20)
- FiberLocal / IOLocal logger wrapper HOT 2
- Usability issue with `Sync` constraint requirement. HOT 2
- Proposal for `log4cats-sourcecode` module to provide information about the call site HOT 3
- log4cats-slf4j depends on log4cats-core_sjs1
- Backport #629 (LoggerFactory) to Cats Effect 2 compatible release series. HOT 4
- Clarify release notes HOT 13
- `randomUUID` is blocking
- Implement a Scala.js `ConsoleLogger` HOT 4
- Plans on updating `slf4j` to 2.0 HOT 6
- Is there big performance hit calling <MyLogger>[F].create on every function call HOT 3
- Provide Writer/WriterT backed StructuredLogger HOT 1
- The changelog is out of date.
- Publish `v2.6.0` HOT 2
- Way to change loglevel locally / globally? HOT 1
- Ease migration path from passing around a single `SelfAwareStructuredLogger` to using `LoggerFactory` HOT 1
- Release latest dependency updates HOT 2
- Support for a safe way to defer logging on the happy path
- OOME occurs on CI when building library against Scala 3 on Native
- Are values in the MDC intended to be include in the context logged by Slf4jLogger? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from log4cats.