Package groovy.util.logging
Annotation Interface Log4j2
This local transform adds a logging ability to your program using
Log4j2 logging. Every method call on an unbound variable named log
will be mapped to a call to the logger. For this a log field will be
inserted in the class. If the field already exists the usage of this transform
will cause a compilation error. The method name will be used to determine
what to call on the logger.
log.name(exp)is mapped to
if (log.isNameEnabled() {
log.name(exp)
}
Here name is a placeholder for info, debug, warning, error, etc.
If the expression exp is a constant or only a variable access the method call will
not be transformed. But this will still cause a call on the injected logger.- Since:
- 2.2.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classLogging strategy for Log4j 2. -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionReturns the logger category name.Class<? extends LogASTTransformation.LoggingStrategy>Returns the logging strategy implementation used by this transform.booleanWhether logging statements hand Log4j 2 their source location, computed at compile time, instead of leaving it to be found by walking the stack at run time.Returns the injected logger field name.If specified, must match the "id" attribute in a VisibilityOptions annotation to enable a custom visibility.
-
Element Details
-
value
String valueReturns the injected logger field name. Defaults to"log".- Returns:
- the logger field name
- Default:
- "log"
-
category
String categoryReturns the logger category name. Defaults toLogASTTransformation.DEFAULT_CATEGORY_NAME, which uses the host class name.- Returns:
- the logger category name
- Default:
- "##default-category-name##"
-
visibilityId
String visibilityIdIf specified, must match the "id" attribute in a VisibilityOptions annotation to enable a custom visibility.- Since:
- 3.0.0
- Default:
- "<DummyUndefinedMarkerString-DoNotUse>"
-
loggingStrategy
Class<? extends LogASTTransformation.LoggingStrategy> loggingStrategyReturns the logging strategy implementation used by this transform. Defaults toLog4j2.Log4j2LoggingStrategy.- Returns:
- the logging strategy type
- Default:
- groovy.util.logging.Log4j2.Log4j2LoggingStrategy.class
-
staticLocation
boolean staticLocationWhether logging statements hand Log4j 2 their source location, computed at compile time, instead of leaving it to be found by walking the stack at run time. Withtrue,log.info(msg)becomeslog.atInfo().withLocation(location).log(msg), wherelocationis aStackTraceElementfor the statement held in a synthetic static field of the annotated class, naming the class, the enclosing method, the source file and the line of the statement. That location is correct however the call is dispatched -- through the Groovy runtime on a JVM, or inside a GraalVM native image, where stack walking otherwise reports runtime frames -- and it spares Log4j 2 the stack walk that%C,%M,%Fand%Lpatterns need.Requires the
LogBuilderAPI (Log4j 2.13 or later) on the compile classpath; compilation fails otherwise. Argument types are unknown when the transform runs, so aMarkerfirst argument or aThrowablelast argument is recognised, at run time, when it is passed as a variable (the usuallog.error("...", e)shape); other expressions in those positions are logged as message parameters. Statements inside a closure name the enclosing method rather than the closure'sdoCall. Only statements made through the injected logger field are rewritten.- Returns:
trueto supply locations at compile time- Since:
- 6.0.0
- Default:
- false
-