Skip to content

Commit fa169d0

Browse files
committed
Merge pull request #92 from scouter-project/master
Merge for release
2 parents cc1a64d + b7eaa07 commit fa169d0

File tree

76 files changed

+2994
-2468
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+2994
-2468
lines changed

build_client.sh

100755100644
File mode changed.

build_package.sh

100755100644
File mode changed.

scouter.agent.host/scripts/readlink.sh

100755100644
File mode changed.

scouter.agent.host/scripts/sample2.host.sh

100755100644
File mode changed.

scouter.agent.host/scripts/sample2.stop.sh

100755100644
File mode changed.

scouter.agent.java/src/scouter/agent/AgentTransformer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ public byte[] transform(ClassLoader loader, String className, Class classBeingRe
125125
public void visit(int version, int access, String name, String signature, String superName,
126126
String[] interfaces) {
127127
classDesc.set(version, access, name, signature, superName, interfaces);
128+
super.visit(version, access, name, signature, superName, interfaces);
128129
}
129130

130131
@Override

scouter.agent.java/src/scouter/agent/Configure.java

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,6 @@
1616
*/
1717
package scouter.agent;
1818

19-
import java.io.File;
20-
import java.io.FileInputStream;
21-
import java.io.FileOutputStream;
22-
import java.io.InputStream;
23-
import java.io.OutputStream;
24-
import java.util.HashMap;
25-
import java.util.HashSet;
26-
import java.util.Map;
27-
import java.util.Properties;
28-
import java.util.Set;
29-
3019
import scouter.Version;
3120
import scouter.agent.netio.data.DataProxy;
3221
import scouter.lang.conf.ConfObserver;
@@ -35,16 +24,10 @@
3524
import scouter.lang.value.ListValue;
3625
import scouter.lang.value.MapValue;
3726
import scouter.net.NetConstants;
38-
import scouter.util.DateUtil;
39-
import scouter.util.FileUtil;
40-
import scouter.util.HashUtil;
41-
import scouter.util.StringEnumer;
42-
import scouter.util.StringKeyLinkedMap;
43-
import scouter.util.StringSet;
44-
import scouter.util.StringUtil;
45-
import scouter.util.SysJMX;
46-
import scouter.util.SystemUtil;
47-
import scouter.util.ThreadUtil;
27+
import scouter.util.*;
28+
29+
import java.io.*;
30+
import java.util.*;
4831
public class Configure extends Thread {
4932
public static boolean JDBC_REDEFINED = false;
5033
private static Configure instance = null;
@@ -162,6 +145,8 @@ public final static synchronized Configure getInstance() {
162145
public String log_dir ="";
163146
public boolean log_rotation_enabled =true;
164147
public int log_keep_days =7;
148+
public boolean _log_trace_enabled = false;
149+
public boolean _log_trace_use_logger = false;
165150

166151
//Hook
167152
public String hook_args_patterns = "";
@@ -490,6 +475,8 @@ private void apply() {
490475
this.log_dir = getValue("log_dir", "");
491476
this.log_rotation_enabled = getBoolean("log_rotation_enabled", true);
492477
this.log_keep_days = getInt("log_keep_days", 7);
478+
this._log_trace_enabled = getBoolean("_log_trace_enabled", false);
479+
this._log_trace_use_logger = getBoolean("_log_trace_use_logger", false);
493480

494481
this.enduser_trace_endpoint_url = getValue("enduser_trace_endpoint_url", "_scouter_browser.jsp");
495482
this.enduser_perf_endpoint_hash = HashUtil.hash(this.enduser_trace_endpoint_url);

scouter.agent.java/src/scouter/agent/Logger.java

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,16 @@
1616
*/
1717
package scouter.agent;
1818

19-
import java.io.File;
20-
import java.io.FileWriter;
21-
import java.io.IOException;
22-
import java.io.PrintWriter;
23-
import java.io.StringWriter;
24-
25-
import scouter.util.CompareUtil;
26-
import scouter.util.DateUtil;
27-
import scouter.util.FileUtil;
28-
import scouter.util.IClose;
29-
import scouter.util.StringLongLinkedMap;
30-
import scouter.util.StringUtil;
31-
import scouter.util.ThreadUtil;
19+
import scouter.util.*;
20+
21+
import java.io.*;
3222

3323
public class Logger {
3424

3525
private static StringLongLinkedMap lastLog = new StringLongLinkedMap().setMax(1000);
26+
static Configure conf = Configure.getInstance();
3627

37-
public static void println(Object message) {
28+
public static void println(Object message) {
3829
println(build("SCOUTER", toString(message)), true);
3930
}
4031

@@ -45,6 +36,24 @@ public static void println(String id, Object message) {
4536
println(build(id, toString(message)), true);
4637
}
4738

39+
public static void println(String id, String message, Throwable t) {
40+
if (checkOk(id, 10) == false) {
41+
return;
42+
}
43+
println(build(id, message), true);
44+
println(ThreadUtil.getStackTrace(t), true);
45+
}
46+
47+
public static void trace(Object message) {
48+
if(conf._log_trace_enabled) {
49+
if(conf._log_trace_use_logger) {
50+
println(build("SCOUTER-TRC", toString(message)), true);
51+
} else {
52+
System.out.println(build("SCOUTER-TRC", toString(message)));
53+
}
54+
}
55+
}
56+
4857
private static String toString(Object message) {
4958
return message == null ? "null" : message.toString();
5059
}
@@ -55,14 +64,6 @@ private static String build(String id, String message) {
5564
.append(message).toString();
5665
}
5766

58-
public static void println(String id, String message, Throwable t) {
59-
if (checkOk(id, 10) == false) {
60-
return;
61-
}
62-
println(build(id, message), true);
63-
println(ThreadUtil.getStackTrace(t), true);
64-
}
65-
6667
public static String getCallStack(Throwable t) {
6768
StringWriter sw = new StringWriter();
6869
PrintWriter pw = new PrintWriter(sw);
@@ -133,7 +134,6 @@ private static synchronized void openFile(String prefix) throws IOException {
133134
}
134135
}
135136

136-
static Configure conf = Configure.getInstance();
137137
static Runnable initializer = new Runnable() {
138138
long last = System.currentTimeMillis();
139139
long lastDataUnit = DateUtil.getDateUnit();

scouter.agent.java/src/scouter/agent/asm/JDBCDriverASM.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,16 @@
1515
* limitations under the License.
1616
*/
1717
package scouter.agent.asm;
18-
import java.util.Map;
1918
import scouter.agent.ClassDesc;
2019
import scouter.agent.Configure;
2120
import scouter.agent.Logger;
2221
import scouter.agent.asm.util.AsmUtil;
2322
import scouter.agent.asm.util.HookingSet;
2423
import scouter.agent.trace.TraceSQL;
25-
import scouter.org.objectweb.asm.ClassVisitor;
26-
import scouter.org.objectweb.asm.Label;
27-
import scouter.org.objectweb.asm.MethodVisitor;
28-
import scouter.org.objectweb.asm.Opcodes;
29-
import scouter.org.objectweb.asm.Type;
24+
import scouter.org.objectweb.asm.*;
3025
import scouter.org.objectweb.asm.commons.LocalVariablesSorter;
26+
27+
import java.util.Map;
3128
public class JDBCDriverASM implements IASM, Opcodes {
3229
//user can define driver.connect()
3330
private Map<String, HookingSet> reserved =HookingSet.getHookingSet(Configure.getInstance().hook_jdbc_wrapping_driver_patterns);
@@ -43,7 +40,7 @@ public ClassVisitor transform(ClassVisitor cv, String className, ClassDesc class
4340
if (mset != null){
4441
return new JDBCDriverCV(cv, mset, className);
4542
}
46-
43+
4744
return cv;
4845
}
4946
}
@@ -64,7 +61,7 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
6461
if (AsmUtil.isSpecial(name)) {
6562
return mv;
6663
}
67-
String fullname = AsmUtil.add(className, name, desc);
64+
String fullname = AsmUtil.makeMethodFullName(className, name, desc);
6865

6966
Logger.println("A105", "jdbc db2 driver loaded: " + fullname);
7067
return new JDBCDriverMV(access, desc, mv, fullname);

scouter.agent.java/src/scouter/agent/asm/JDBCPreparedStatementASM.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,19 @@
1515
* limitations under the License.
1616
*/
1717
package scouter.agent.asm;
18-
import java.util.HashSet;
1918
import scouter.agent.ClassDesc;
2019
import scouter.agent.Configure;
2120
import scouter.agent.Logger;
22-
import scouter.agent.asm.jdbc.PsClearParametersMV;
23-
import scouter.agent.asm.jdbc.PsExecuteMV;
24-
import scouter.agent.asm.jdbc.PsInitMV;
25-
import scouter.agent.asm.jdbc.PsSetMV;
26-
import scouter.agent.asm.jdbc.StExecuteMV;
21+
import scouter.agent.asm.jdbc.*;
2722
import scouter.agent.asm.util.HookingSet;
2823
import scouter.agent.trace.SqlParameter;
2924
import scouter.agent.trace.TraceSQL;
3025
import scouter.org.objectweb.asm.ClassVisitor;
3126
import scouter.org.objectweb.asm.MethodVisitor;
3227
import scouter.org.objectweb.asm.Opcodes;
3328
import scouter.org.objectweb.asm.Type;
29+
30+
import java.util.HashSet;
3431
public class JDBCPreparedStatementASM implements IASM, Opcodes {
3532
public final HashSet<String> target = HookingSet.getHookingClassSet(Configure.getInstance().hook_jdbc_pstmt_classes);
3633
public final HashSet<String> noField = new HashSet<String>();
@@ -85,6 +82,7 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
8582
MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
8683
if ("<init>".equals(name)) {
8784
return new PsInitMV(access, desc, mv, owner);
85+
8886
} else {
8987
String targetDesc = PsSetMV.getSetSignature(name);
9088
if (targetDesc != null) {
@@ -93,13 +91,16 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
9391
}
9492
} else if (PsExecuteMV.isTarget(name)) {
9593
if (desc.startsWith("()")) {
96-
return new PsExecuteMV(access, desc, mv, owner);
94+
return new PsExecuteMV(access, desc, mv, owner, name);
9795
} else if (desc.startsWith("(Ljava/lang/String;)")) {
98-
return new StExecuteMV(access, desc, mv, owner);
96+
return new StExecuteMV(access, desc, mv, owner, name);
9997
}
10098
} else if ("clearParameters".equals(name) && "()V".equals(desc)) {
10199
return new PsClearParametersMV(access, desc, mv, owner);
102-
}
100+
101+
} else if ("getUpdateCount".equals(name) && "()I".equals(desc)) {
102+
return new PsUpdateCountMV(mv);
103+
}
103104
}
104105
return mv;
105106
}

0 commit comments

Comments
 (0)