openrewrite / rewrite-maven-plugin

OpenRewrite's Maven plugin.
https://openrewrite.github.io/rewrite-maven-plugin/plugin-info.html
Apache License 2.0
140 stars 73 forks source link

Duplicated recipes in logs #326

Closed yeikel closed 2 years ago

yeikel commented 2 years ago

While running open rewrite in my module, I noticed that the log of the same recipe is printed more than once. Does this mean that it transformed two instances? If so, maybe it should be printed only once?

See :

[WARNING] Changes have been made to Hello.java by:
[WARNING]     org.openrewrite.java.logging.ParameterizedLogging
[WARNING]     org.openrewrite.java.cleanup.FinalizeLocalVariables
[WARNING]     org.openrewrite.java.logging.ParameterizedLogging
tkvangorder commented 2 years ago

This is likely because there are two different instances of the Parameterized logging (with different configurations)

yeikel commented 2 years ago

The only two logging related recipes that I have are :

➜  cat pom.xml | grep "org.openrewrite.java.logging"
                        <recipe>org.openrewrite.java.logging.slf4j.ParameterizedLogging</recipe>
                        <recipe>org.openrewrite.java.logging.PrintStackTraceToLogError</recipe>
yeikel commented 2 years ago

This is possibly related to https://github.com/openrewrite/rewrite-logging-frameworks/issues/60#issuecomment-1093189052

tkvangorder commented 2 years ago

thanks, I will take a closer look

pway99 commented 2 years ago

For a bit more context: The duplicate log messages are caused by org.openrewrite.java.logging.slf4j.ParameterizedLogging having one org.openrewrite.java.logging.ParameterizedLogging recipe configuration for each log level. Hello.java most likely has at least two logging statements with different log levels.

type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.logging.slf4j.ParameterizedLogging
displayName: Parameterize SLF4J logging statements
description: SLF4J supports parameterized logging, which can significantly boost logging performance for disabled logging statements.
tags:
  - logging
  - slf4j
  - RSPEC-2629
recipeList:
  - org.openrewrite.java.logging.ParameterizedLogging:
      methodPattern: org.slf4j.Logger trace(..)
  - org.openrewrite.java.logging.ParameterizedLogging:
      methodPattern: org.slf4j.Logger debug(..)
  - org.openrewrite.java.logging.ParameterizedLogging:
      methodPattern: org.slf4j.Logger info(..)
  - org.openrewrite.java.logging.ParameterizedLogging:
      methodPattern: org.slf4j.Logger warn(..)
  - org.openrewrite.java.logging.ParameterizedLogging:
      methodPattern: org.slf4j.Logger error(..)
pway99 commented 2 years ago

fixed by https://github.com/openrewrite/rewrite/commit/cfd371c295950ee3f3ee4b15f43cb13c37ed130f