All Versions
Latest Version
Avg Release Cycle
Latest Release

Changelog History

  • v2.1.1 Changes

    ๐Ÿ”Š Break out Jackson serde module and make both Logstash and Log4J2 implementations depend on it.

    • Break out jackson module as a distinct dependency.
    • โฌ†๏ธ Upgrade to Log4J2 2.18.0
  • v2.1.0 Changes

    ๐Ÿ”„ Changes to CoreLogger API to allow for more flexible loggers in echopraxia-plusscala. Some optimizations.

    • โž• Add extraFields parameter to CoreLogger methods. #201
    • Document "call-by-name" semantics on logger.withFields. #188
    • ๐Ÿ”ฆ Expose getArgumentFields() and getLoggerFields() methods on LoggingContext. #197
    • โฌ†๏ธ Upgrade logstash-logback-encoder to 7.2 #203
    • โž• Add coreLogger.logHandle for loggers that may log multiple times internally when called. #202
    • ๐Ÿ›  Fix a bug where withFields was being memoized and evaluated once. #187
  • v2.0.1 Changes

    ๐Ÿ› Bug fixes and some enhancements around number values.

    • ๐Ÿ‘ป ctx.findList returns a list with a single element if an element matches, i.e. ctx.findList("$.exception") returns a list containing a single Throwable.
    • โž• Add object equality methods for Value and Field instances.
    • โž• Add Comparable interface for NumberValue and specialize types so that NumberValue<Integer> and NumberValue<Byte> are not comparable.
    • ๐Ÿ‘ Set null numbers to return 0 rather than null to better reflect java number behavior.
    • โœ‚ Remove generic Numeric methods, use specific numbers in methods.
    • โž• Add cache for number values corresponding to the java.lang number caches.
  • v2.0.0 Changes

    API changes

    ๐Ÿ“ฆ The API package now begins with the package name com.tersesystems.echopraxia.api and does not contain the Logger or LoggerFactory classes. All the classes in core and support have been moved to api.

    ๐Ÿ— There is a new FieldBuilderResult interface that is responsible for getting fields from a field builder. The Field.BuilderFunction interface which extended Function<FB, List<Field>> has been replaced with plain Function<FB, FieldBuilderResult>. The Field interface now extends FieldBuilderResult. The upshot of this is that both fb.list and field return a FieldBuilderResult and there is no more need for fb.only. A FieldBuilderWithOnly interface is available for backwards compatibility. FieldBuilderResult.list will take most aggregate forms; Stream, Iterator, etc.

    ๐Ÿ— The Field.Builder interface is now FieldBuilder.

    ๐Ÿšš The Field.Value interface and subclasses have been moved to a top level class Value, i.e. Value.string("foo") rather than Field.Value.string("foo").

    ๐Ÿ‘ป There is a FieldConstants class that uses a resource bundle to load in hardcoded field constants, such as exception and stackTrace. Use FieldConstants.EXCEPTION to reference.

    The core logger no longer depends on FB extends FieldBuilder, so it is now possible to create custom loggers that don't expose fb.keyValue or fb.string.

    There is a new Utilities.threadContext() method which is a cleaner way to manage thread context in custom loggers.

    ๐Ÿšš Jayway specific predicates removed from LoggingContext API.

    Logger Changes

    ๐Ÿ“ฆ Logger has been broken out into a different maven package. It is still in the same location com.tersesystems.echopraxia.Logger.

    ๐Ÿšš The withExecutor method that returned AsyncLogger has been removed.

    ๐Ÿšš The withFieldBuilder(Foo.class) method has been removed, please use withFieldBuilder(new Foo) instead.