Commit | Line | Data |
---|---|---|
8c8bf09f ASL |
1 | package org.eclipse.linuxtools.tmf;\r |
2 | \r | |
550d787e FC |
3 | import java.io.BufferedWriter;\r |
4 | import java.io.FileWriter;\r | |
5 | import java.io.IOException;\r | |
6 | \r | |
8c8bf09f | 7 | import org.eclipse.core.runtime.Platform;\r |
550d787e FC |
8 | import org.eclipse.linuxtools.tmf.component.ITmfComponent;\r |
9 | import org.eclipse.linuxtools.tmf.component.ITmfDataProvider;\r | |
10 | import org.eclipse.linuxtools.tmf.event.TmfData;\r | |
11 | import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;\r | |
8c8bf09f ASL |
12 | \r |
13 | public class Tracer {\r | |
14 | \r | |
36548af3 | 15 | private static String pluginID = TmfCorePlugin.PLUGIN_ID;\r |
9aae0442 | 16 | \r |
550d787e FC |
17 | static Boolean ERROR = Boolean.FALSE;\r |
18 | static Boolean WARNING = Boolean.FALSE;\r | |
19 | static Boolean INFO = Boolean.FALSE;\r | |
20 | \r | |
21 | static Boolean COMPONENT = Boolean.FALSE;\r | |
22 | static Boolean REQUEST = Boolean.FALSE;\r | |
23 | static Boolean SIGNAL = Boolean.FALSE;\r | |
24 | static Boolean EVENT = Boolean.FALSE;\r | |
550d787e | 25 | \r |
9b635e61 | 26 | private static String LOGNAME = "trace.log";\r |
550d787e FC |
27 | private static BufferedWriter fTraceLog = null;\r |
28 | \r | |
29 | private static BufferedWriter openLogFile(String filename) {\r | |
30 | BufferedWriter outfile = null;\r | |
31 | try {\r | |
32 | outfile = new BufferedWriter(new FileWriter(filename));\r | |
33 | } catch (IOException e) {\r | |
34 | e.printStackTrace();\r | |
35 | }\r | |
36 | return outfile;\r | |
37 | }\r | |
38 | \r | |
8c8bf09f | 39 | public static void init() {\r |
8c8bf09f | 40 | \r |
550d787e FC |
41 | String traceKey;\r |
42 | boolean isTracing = false;\r | |
43 | \r | |
44 | traceKey = Platform.getDebugOption(pluginID + "/error");\r | |
45 | if (traceKey != null) {\r | |
46 | ERROR = (Boolean.valueOf(traceKey)).booleanValue();\r | |
47 | isTracing |= ERROR;\r | |
48 | }\r | |
49 | \r | |
50 | traceKey = Platform.getDebugOption(pluginID + "/warning");\r | |
8c8bf09f | 51 | if (traceKey != null) {\r |
550d787e FC |
52 | WARNING = (Boolean.valueOf(traceKey)).booleanValue();\r |
53 | isTracing |= WARNING;\r | |
8c8bf09f | 54 | }\r |
550d787e FC |
55 | \r |
56 | traceKey = Platform.getDebugOption(pluginID + "/info");\r | |
57 | if (traceKey != null) {\r | |
58 | INFO = (Boolean.valueOf(traceKey)).booleanValue();\r | |
59 | isTracing |= INFO;\r | |
60 | }\r | |
61 | \r | |
62 | traceKey = Platform.getDebugOption(pluginID + "/component");\r | |
63 | if (traceKey != null) {\r | |
64 | COMPONENT = (Boolean.valueOf(traceKey)).booleanValue();\r | |
65 | isTracing |= COMPONENT;\r | |
66 | }\r | |
67 | \r | |
68 | traceKey = Platform.getDebugOption(pluginID + "/request");\r | |
69 | if (traceKey != null) {\r | |
70 | REQUEST = (Boolean.valueOf(traceKey)).booleanValue();\r | |
71 | isTracing |= REQUEST;\r | |
72 | }\r | |
73 | \r | |
74 | traceKey = Platform.getDebugOption(pluginID + "/signal");\r | |
75 | if (traceKey != null) {\r | |
76 | SIGNAL = (Boolean.valueOf(traceKey)).booleanValue();\r | |
77 | isTracing |= SIGNAL;\r | |
78 | }\r | |
79 | \r | |
80 | traceKey = Platform.getDebugOption(pluginID + "/event");\r | |
81 | if (traceKey != null) {\r | |
82 | EVENT = (Boolean.valueOf(traceKey)).booleanValue();\r | |
83 | isTracing |= EVENT;\r | |
84 | }\r | |
85 | \r | |
550d787e FC |
86 | // Create trace log file if needed\r |
87 | if (isTracing) {\r | |
9b635e61 FC |
88 | fTraceLog = openLogFile(LOGNAME);\r |
89 | }\r | |
90 | }\r | |
91 | \r | |
92 | public static void stop() {\r | |
93 | if (fTraceLog == null)\r | |
94 | return;\r | |
95 | \r | |
96 | try {\r | |
97 | fTraceLog.close();\r | |
98 | fTraceLog = null;\r | |
99 | } catch (IOException e) {\r | |
100 | e.printStackTrace();\r | |
550d787e FC |
101 | }\r |
102 | }\r | |
103 | \r | |
104 | // Predicates\r | |
105 | public static boolean isErrorTraced() {\r | |
106 | return ERROR;\r | |
107 | }\r | |
108 | \r | |
109 | public static boolean isComponentTraced() {\r | |
110 | return COMPONENT;\r | |
111 | }\r | |
112 | \r | |
113 | public static boolean isRequestTraced() {\r | |
114 | return REQUEST;\r | |
115 | }\r | |
116 | \r | |
117 | public static boolean isEventTraced() {\r | |
118 | return EVENT;\r | |
119 | }\r | |
120 | \r | |
550d787e FC |
121 | // Tracers\r |
122 | public static void trace(String msg) {\r | |
123 | long currentTime = System.currentTimeMillis();\r | |
124 | StringBuilder message = new StringBuilder("[");\r | |
125 | message.append(currentTime / 1000);\r | |
126 | message.append(".");\r | |
127 | message.append(currentTime % 1000);\r | |
128 | message.append("] ");\r | |
129 | message.append(msg);\r | |
9b635e61 FC |
130 | // System.out.println(message);\r |
131 | \r | |
132 | if (fTraceLog != null) {\r | |
133 | try {\r | |
550d787e FC |
134 | fTraceLog.write(message.toString());\r |
135 | fTraceLog.newLine();\r | |
136 | fTraceLog.flush();\r | |
9b635e61 FC |
137 | } catch (IOException e) {\r |
138 | e.printStackTrace();\r | |
550d787e | 139 | }\r |
8c8bf09f ASL |
140 | }\r |
141 | }\r | |
550d787e FC |
142 | \r |
143 | public static void traceComponent(ITmfComponent component, String msg) {\r | |
144 | String message = ("[CMP] Thread=" + Thread.currentThread().getId() + " Cmp=" + component.getName() + " " + msg);\r | |
145 | trace(message);\r | |
146 | }\r | |
147 | \r | |
148 | public static void traceRequest(ITmfDataRequest<?> request, String msg) {\r | |
cb866e08 | 149 | String message = ("[REQ] Thread=" + Thread.currentThread().getId() + " Req=" + request.getRequestId() + \r |
f6b14ce2 | 150 | (request.getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? "(BG)" : "(FG)") +\r |
cb866e08 FC |
151 | ", Type=" + request.getClass().getName() + \r |
152 | ", DataType=" + request.getDataType().getSimpleName() + " " + msg);\r | |
550d787e FC |
153 | trace(message);\r |
154 | }\r | |
155 | \r | |
156 | public static void traceEvent(ITmfDataProvider<?> provider, ITmfDataRequest<?> request, TmfData data) {\r | |
157 | String message = ("[EVT] Provider=" + provider.toString() + ", Req=" + request.getRequestId() + ", Event=" + data.toString());\r | |
158 | trace(message);\r | |
159 | }\r | |
160 | \r | |
550d787e FC |
161 | public static void traceError(String msg) {\r |
162 | String message = ("[ERR] Thread=" + Thread.currentThread().getId() + " " + msg);\r | |
163 | trace(message);\r | |
164 | }\r | |
165 | \r | |
9b635e61 FC |
166 | public static void traceInfo(String msg) {\r |
167 | String message = ("[INF] Thread=" + Thread.currentThread().getId() + " " + msg);\r | |
168 | trace(message);\r | |
169 | }\r | |
170 | \r | |
8c8bf09f | 171 | }\r |