Skip to content

Commit

Permalink
[pinpoint-apm#2862] Remove code using annotation logic in log4j, logb…
Browse files Browse the repository at this point in the history
…ack plugin
  • Loading branch information
minwoo-jung committed Apr 26, 2017
1 parent c0dea8a commit 983ddfe
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,84 +29,19 @@
*/
public final class InstrumentUtils {

public static void addScopeInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, String scopeName) throws InstrumentException {
if (clazz == null) {
throw new NullPointerException("clazz must not be null");
}
if (methodName == null) {
throw new NullPointerException("methodName must not be null");
}
if (interceptorClassName == null) {
throw new NullPointerException("interceptorClassName must not be null");
}
if (scopeName == null) {
throw new NullPointerException("scopeName must not be null");
}

final InstrumentMethod method = findMethod(clazz, methodName, parameterTypes);
method.addScopedInterceptor(interceptorClassName, scopeName);
}


@Deprecated
public static void addInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, String scopeName) throws InstrumentException {
addScopeInterceptor(clazz, methodName, parameterTypes, interceptorClassName, scopeName);
}

public static void addInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, String scopeName, ExecutionPolicy executionPolicy) throws InstrumentException {
addScopedInterceptor(clazz, methodName, parameterTypes, interceptorClassName, scopeName, executionPolicy);
}

public static void addScopedInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, String scopeName, ExecutionPolicy executionPolicy) throws InstrumentException {
if (clazz == null) {
throw new NullPointerException("clazz must not be null");
}
if (methodName == null) {
throw new NullPointerException("methodName must not be null");
}
if (interceptorClassName == null) {
throw new NullPointerException("interceptorClassName must not be null");
}
if (scopeName == null) {
throw new NullPointerException("scopeName must not be null");
}

final InstrumentMethod method = findMethod(clazz, methodName, parameterTypes);
method.addScopedInterceptor(interceptorClassName, scopeName, executionPolicy);
}

public static void addInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, Object[] interceptorParams, String scopeName) throws InstrumentException {
addInterceptor(clazz, methodName, parameterTypes, interceptorClassName, interceptorParams, scopeName, null);
}

public static void addInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, Object[] interceptorParams, String scopeName, ExecutionPolicy executionPolicy) throws InstrumentException {
addScopedInterceptor(clazz, methodName, parameterTypes, interceptorClassName, interceptorParams, scopeName, executionPolicy);
}

public static void addScopedInterceptor(InstrumentClass clazz, String methodName, String[] parameterTypes, String interceptorClassName, Object[] interceptorParams, String scopeName, ExecutionPolicy executionPolicy) throws InstrumentException {
if (clazz == null) {
throw new NullPointerException("clazz must not be null");
}
if (methodName == null) {
throw new NullPointerException("methodName must not be null");
}
if (interceptorClassName == null) {
throw new NullPointerException("interceptorClassName must not be null");
}
if (scopeName == null) {
throw new NullPointerException("scopeName must not be null");
}

final InstrumentMethod method = findMethod(clazz, methodName, parameterTypes);
method.addScopedInterceptor(interceptorClassName, interceptorParams, scopeName, executionPolicy);
}

private static InstrumentMethod findMethod(InstrumentClass clazz, String methodName, String[] parameterTypes) throws NotFoundInstrumentException {
public static InstrumentMethod findMethod(InstrumentClass clazz, String methodName, String[] parameterTypes) throws NotFoundInstrumentException {
final InstrumentMethod method = clazz.getDeclaredMethod(methodName, parameterTypes);
if (method == null) {
throw new NotFoundInstrumentException("Cannot find method " + methodName + " with parameter types: " + Arrays.toString(parameterTypes));
}
return method;
}

public static InstrumentMethod findConstructor(InstrumentClass clazz, String[] parameterTypes) throws NotFoundInstrumentException {
InstrumentMethod constructor = clazz.getConstructor(parameterTypes);
if (constructor == null) {
throw new NotFoundInstrumentException("Cannot find constructor with parameter types: " + Arrays.toString(parameterTypes));
}
return constructor;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@
package com.navercorp.pinpoint.plugin.log4j;

import java.security.ProtectionDomain;
import java.util.Arrays;

import com.navercorp.pinpoint.bootstrap.instrument.InstrumentClass;
import com.navercorp.pinpoint.bootstrap.instrument.InstrumentException;
import com.navercorp.pinpoint.bootstrap.instrument.Instrumentor;
import com.navercorp.pinpoint.bootstrap.instrument.*;
import com.navercorp.pinpoint.bootstrap.instrument.transformer.TransformCallback;
import com.navercorp.pinpoint.bootstrap.instrument.transformer.TransformTemplate;
import com.navercorp.pinpoint.bootstrap.instrument.transformer.TransformTemplateAware;
import com.navercorp.pinpoint.bootstrap.logging.PLogger;
import com.navercorp.pinpoint.bootstrap.logging.PLoggerFactory;
import com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin;
import com.navercorp.pinpoint.bootstrap.plugin.ProfilerPluginSetupContext;
import com.navercorp.pinpoint.bootstrap.plugin.util.InstrumentUtils;

/**
* This modifier support log4j 1.2.15 version, or greater.
Expand All @@ -41,7 +41,7 @@ public class Log4jPlugin implements ProfilerPlugin, TransformTemplateAware {
private final PLogger logger = PLoggerFactory.getLogger(getClass());
private TransformTemplate transformTemplate;


@Override
public void setup(ProfilerPluginSetupContext context) {
final Log4jConfig config = new Log4jConfig(context.getConfig());
Expand Down Expand Up @@ -94,11 +94,22 @@ public byte[] doInTransform(Instrumentor instrumentor, ClassLoader loader, Strin
+ "\nconstructor prototype : LoggingEvent(final String fqnOfCategoryClass, final Category logger, final long timeStamp, final Level level, final Object message, final String threadName, final ThrowableInformation throwable, final String ndc, final LocationInfo info, final java.util.Map properties);");
return null;
}

target.addInterceptor("com.navercorp.pinpoint.plugin.log4j.interceptor.LoggingEventOfLog4jInterceptor");


final String interceptorClassName = "com.navercorp.pinpoint.plugin.log4j.interceptor.LoggingEventOfLog4jInterceptor";
addInterceptor(target, new String[]{"java.lang.String", "org.apache.log4j.Category", "org.apache.log4j.Priority", "java.lang.Object", "java.lang.Throwable"}, interceptorClassName);
addInterceptor(target, new String[]{"java.lang.String", "org.apache.log4j.Category", "long", "org.apache.log4j.Priority", "java.lang.Object", "java.lang.Throwable"}, interceptorClassName);
addInterceptor(target, new String[]{"java.lang.String", "org.apache.log4j.Category", "long", "org.apache.log4j.Level", "java.lang.Object", "java.lang.String", "org.apache.log4j.spi.ThrowableInformation", "java.lang.String", "org.apache.log4j.spi.LocationInfo", "java.util.Map"}, interceptorClassName);

return target.toBytecode();
}

private void addInterceptor(InstrumentClass target, String[] parameterTypes, String interceptorClassName) throws InstrumentException {
InstrumentMethod constructor = InstrumentUtils.findConstructor(target, parameterTypes);
if (constructor == null) {
throw new NotFoundInstrumentException("Cannot find constructor with parameter types: " + Arrays.toString(parameterTypes));
}
constructor.addInterceptor(interceptorClassName);
}
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@
package com.navercorp.pinpoint.plugin.logback;

import java.security.ProtectionDomain;
import java.util.Arrays;

import com.navercorp.pinpoint.bootstrap.instrument.InstrumentClass;
import com.navercorp.pinpoint.bootstrap.instrument.InstrumentException;
import com.navercorp.pinpoint.bootstrap.instrument.Instrumentor;
import com.navercorp.pinpoint.bootstrap.instrument.*;
import com.navercorp.pinpoint.bootstrap.instrument.transformer.TransformCallback;
import com.navercorp.pinpoint.bootstrap.instrument.transformer.TransformTemplate;
import com.navercorp.pinpoint.bootstrap.instrument.transformer.TransformTemplateAware;
import com.navercorp.pinpoint.bootstrap.logging.PLogger;
import com.navercorp.pinpoint.bootstrap.logging.PLoggerFactory;
import com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin;
import com.navercorp.pinpoint.bootstrap.plugin.ProfilerPluginSetupContext;
import com.navercorp.pinpoint.bootstrap.plugin.util.InstrumentUtils;

/**
* This modifier support slf4j 1.4.1 version and logback 0.9.8 version, or greater.
Expand Down Expand Up @@ -87,11 +87,21 @@ public byte[] doInTransform(Instrumentor instrumentor, ClassLoader loader, Strin
+ "\nconstructor prototype : LoggingEvent(String fqcn, Logger logger, Level level, String message, Throwable throwable, Object[] argArray);");
return null;
}

target.addInterceptor("com.navercorp.pinpoint.plugin.logback.interceptor.LoggingEventOfLogbackInterceptor");


final String interceptorClassName = "com.navercorp.pinpoint.plugin.logback.interceptor.LoggingEventOfLogbackInterceptor";
addInterceptor(target, new String[0], interceptorClassName);
addInterceptor(target, new String[]{"java.lang.String", "ch.qos.logback.classic.Logger", "ch.qos.logback.classic.Level", "java.lang.String", "java.lang.Throwable", "java.lang.Object[]"}, interceptorClassName);

return target.toBytecode();
}

private void addInterceptor(InstrumentClass target, String[] parameterTypes, String interceptorClassName) throws InstrumentException {
InstrumentMethod constructor = InstrumentUtils.findConstructor(target, parameterTypes);
if (constructor == null) {
throw new NotFoundInstrumentException("Cannot find constructor with parameter types: " + Arrays.toString(parameterTypes));
}
constructor.addInterceptor(interceptorClassName);
}
});
}

Expand Down

0 comments on commit 983ddfe

Please sign in to comment.