public class LogTransformer
extends java.lang.Object
implements java.lang.instrument.ClassFileTransformer
LogTransformer does the work of analyzing each class, and if appropriate add log statements to each method to allow logging entry/exit.
This class is based on the article Add Logging at Class Load Time with Java Instrumentation.
Modifier and Type | Class and Description |
---|---|
static class |
LogTransformer.Builder
Builder provides a flexible way of configuring some of many options on the
parent class instead of providing many constructors.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
addEntryExit |
private java.lang.String[] |
ignore |
private java.lang.String |
level |
private java.lang.String |
levelEnabled |
private java.lang.String |
loggerName |
private boolean |
verbose |
Modifier | Constructor and Description |
---|---|
private |
LogTransformer(LogTransformer.Builder builder) |
Modifier and Type | Method and Description |
---|---|
private byte[] |
doClass(java.lang.String name,
java.lang.Class<?> clazz,
byte[] b)
doClass() process a single class by first creates a class description from
the byte codes.
|
private void |
doMethod(javassist.CtBehavior method)
process a single method - this means add entry/exit logging if requested.
|
byte[] |
transform(java.lang.ClassLoader loader,
java.lang.String className,
java.lang.Class<?> clazz,
java.security.ProtectionDomain domain,
byte[] bytes) |
private byte[] |
transform0(java.lang.String className,
java.lang.Class<?> clazz,
java.security.ProtectionDomain domain,
byte[] bytes)
transform0 sees if the className starts with any of the namespaces to
ignore, if so it is returned unchanged.
|
private java.lang.String level
private java.lang.String levelEnabled
private boolean addEntryExit
private boolean verbose
private java.lang.String[] ignore
private java.lang.String loggerName
private LogTransformer(LogTransformer.Builder builder)
public byte[] transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class<?> clazz, java.security.ProtectionDomain domain, byte[] bytes)
transform
in interface java.lang.instrument.ClassFileTransformer
private byte[] transform0(java.lang.String className, java.lang.Class<?> clazz, java.security.ProtectionDomain domain, byte[] bytes)
className
- clazz
- domain
- bytes
- private byte[] doClass(java.lang.String name, java.lang.Class<?> clazz, byte[] b)
name
- class name (slashes separate, not dots)clazz
- b
- private void doMethod(javassist.CtBehavior method) throws javassist.NotFoundException, javassist.CannotCompileException
method
- method to work onjavassist.NotFoundException
javassist.CannotCompileException