Hi Matt,

On Tue, 21 Nov 2023 at 23:22, Matt Sicker <m...@musigma.org> wrote:
>
> This sounds like it might be a good basis for figuring out a parallel v3 API 
> for a “hard to mis-use” style API. However, once you go that route, you start 
> to wonder how useful templated log messages are when you can capture a lambda 
> instead. Parameterized log messages might work better as structured log 
> messages, something that is awkward to use in the API at the moment.

If we'll create a separate `v3.Logger` interface I would clean it up
from many methods, e.g.:

 * getLevel() and getName(): how are these useful for the user? An `if
(logger.getLevel() == Level.INFO)` should be replaced by `isEnabled`,
 * getMessageFactory() and getFlowMessageFactory() (the latter is my
fault): again these are not useful to the user. If I need a message
factory, it will be a different message factory,
 * printf(): a better approach is to use StringFormatterMessageFactory
for the logger,
 * catching(Throwable): can be replaced with `error(Object)` and the
semantics described in this thread,
 * throwing: does anybody use it? Maybe it could stay,
 * entry/exit, traceEntry/traceExit: I can not imagine using these on
each method (or important method). I'd rather use AspectJ pointcuts
instead (or a @LogTrace annotation),
 * methods that use `MessageSupplier` like `info(MessageSupplier)`:
couldn't these be integrated into the logic of `info(Supplier)`?
 * the `is*Enabled` methods are prone to misuse: a snippet like:

if (logger.isDebugEnabled()) {
  logger.debug(MARKER, "Hello world!");
}

will not print any message if the level of the logger is less specific
than DEBUG, even if the user asks for **all** MARKER messages to be
printed.

IMHO opinion `v3.AbstractLogger` should only have 2 abstract methods:
 * logMessage(Level level, Marker marker, String fqcn,
StackTraceElement location, Message message, Throwable throwable)
 * isEnabled(Level level, Marker marker, String fqcn,
StackTraceElement location, Message message, Throwable throwable)

Piotr

Reply via email to