Package org.codehaus.groovy.transform
Interface LogASTTransformation.LoggingStrategy
- All Known Subinterfaces:
LogASTTransformation.LoggingStrategyV2
- All Known Implementing Classes:
Commons.CommonsLoggingStrategy,Log.JavaUtilLoggingStrategy,Log4j.Log4jLoggingStrategy,Log4j2.Log4j2LoggingStrategy,LogASTTransformation.AbstractLoggingStrategy,LogASTTransformation.AbstractLoggingStrategyV2,PlatformLog.JavaUtilLoggingStrategy,Slf4j.Slf4jLoggingStrategy
- Enclosing class:
- LogASTTransformation
public static interface LogASTTransformation.LoggingStrategy
A LoggingStrategy defines how to wire a new logger instance into an existing class.
It is meant to be used with the @Log family of annotations to allow you to
write your own Log annotation provider.
-
Method Summary
Modifier and TypeMethodDescriptionaddLoggerFieldToClass(ClassNode classNode, String fieldName, String categoryName) In this method, you are given a ClassNode, a field name and a category name, and you must add a new Field onto the class.default StringgetCategoryName(ClassNode classNode, String categoryName) booleanisLoggingMethod(String methodName) default StringWhywrapLoggingMethodCallWithLocation(org.codehaus.groovy.ast.expr.Expression, java.lang.String, org.codehaus.groovy.ast.expr.MethodCallExpression, org.codehaus.groovy.ast.expr.Expression, boolean)cannot be used with this strategy in the current compilation, for the compile error reported whenstaticLocationis requested anyway.wrapLoggingMethodCall(Expression logVariable, String methodName, Expression originalExpression) default ExpressionwrapLoggingMethodCallWithLocation(Expression logVariable, String methodName, MethodCallExpression originalCall, Expression location, boolean guard) Rewrites a logging call so that the logging framework is handed the statement's location, computed at compile time, instead of walking the stack at run time (GROOVY-12378).
-
Method Details
-
addLoggerFieldToClass
In this method, you are given a ClassNode, a field name and a category name, and you must add a new Field onto the class. Return the result of the ClassNode.addField operations.- Parameters:
classNode- the class that was originally annotated with the Log transformation.fieldName- the name of the logger fieldcategoryName- the name of the logging category- Returns:
- the FieldNode instance that was created and added to the class
-
isLoggingMethod
-
getCategoryName
-
wrapLoggingMethodCall
Expression wrapLoggingMethodCall(Expression logVariable, String methodName, Expression originalExpression) -
staticLocationUnsupportedReason
WhywrapLoggingMethodCallWithLocation(org.codehaus.groovy.ast.expr.Expression, java.lang.String, org.codehaus.groovy.ast.expr.MethodCallExpression, org.codehaus.groovy.ast.expr.Expression, boolean)cannot be used with this strategy in the current compilation, for the compile error reported whenstaticLocationis requested anyway. A strategy whose logging API accepts a caller-supplied location returnsnullwhen that API is resolvable, and names what is missing from the compile classpath when it is not. By default compile-time locations are not implemented.- Returns:
- the reason compile-time locations are unavailable, or
nullif they are supported - Since:
- 6.0.0
-
wrapLoggingMethodCallWithLocation
default Expression wrapLoggingMethodCallWithLocation(Expression logVariable, String methodName, MethodCallExpression originalCall, Expression location, boolean guard) Rewrites a logging call so that the logging framework is handed the statement's location, computed at compile time, instead of walking the stack at run time (GROOVY-12378). Only called whenstaticLocationUnsupportedReason()returnednull.- Parameters:
logVariable- the logger expressionmethodName- the logging method that was called, e.g.infooriginalCall- the call as written; its arguments are the call's argumentslocation- an expression yielding theStackTraceElementfor the statementguard- whether the arguments are worth guarding with a level check (they are not all constants or variables)- Returns:
- the replacement expression, or
nullto leave the call unchanged - Since:
- 6.0.0
-