← All recipes
Moderne licensed

Migrate Log4j 2.x Layout to logback-classic equivalents

Recipe IDorg.openrewrite.java.logging.logback.Log4jLayoutToLogback
Artifactorg.openrewrite.recipe:rewrite-logging-frameworks

Migrates custom Log4j 2.x Layout components to logback-classic. This recipe operates on the following assumptions: 1. A logback-classic layout must extend the LayoutBase<ILoggingEvent> class. 2. log4j's format() is renamed to doLayout() in a logback-classic layout. 3. LoggingEvent getRenderedMessage() is converted to LoggingEvent getMessage(). 4. The log4j ignoresThrowable() method is not needed and has no equivalent in logback-classic. 5. The activateOptions() method merits further discussion. In log4j, a layout will have its activateOptions() method invoked by log4j configurators, that is PropertyConfigurator or DOMConfigurator just after all the options of the layout have been set. Thus, the layout will have an opportunity to check that its options are coherent and if so, proceed to fully initialize itself. 6. In logback-classic, layouts must implement the LifeCycle interface which includes a method called start(). The start() method is the equivalent of log4j's activateOptions() method. For more details, see this page from logback: `Migration from log4j`.

Single recipeMSAL

Usage

This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.

mod run . --recipe org.openrewrite.java.logging.logback.Log4jLayoutToLogback

If the recipe isn’t available locally, install it with:

mod config recipes jar install org.openrewrite.recipe:rewrite-logging-frameworks:3.31.0

Data tables

Structured output this recipe can produce.

  • Source files that had resultsSource files that were modified by the recipe run.org.openrewrite.table.SourcesFileResults
  • Source files that had search resultsSearch results that were found during the recipe run.org.openrewrite.table.SearchResults
  • Source files that errored on a recipeThe details of all errors produced by a recipe run.org.openrewrite.table.SourcesFileErrors
  • Recipe performanceStatistics used in analyzing the performance of recipes.org.openrewrite.table.RecipeRunStats