Merge master in TmfTraceModel
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / internal / tmf / core / Tracer.java
CommitLineData
4918b8f2 1package org.eclipse.linuxtools.internal.tmf.core;\r
8c8bf09f 2\r
550d787e
FC
3import java.io.BufferedWriter;\r
4import java.io.FileWriter;\r
5import java.io.IOException;\r
ce2388e0 6import java.io.OutputStreamWriter;\r
550d787e 7\r
8c8bf09f 8import org.eclipse.core.runtime.Platform;\r
6c13869b
FC
9import org.eclipse.linuxtools.tmf.core.component.ITmfComponent;\r
10import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;\r
72f1e62a 11import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;\r
6c13869b
FC
12import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;\r
13import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;\r
14import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;\r
8c8bf09f 15\r
3b38ea61 16@SuppressWarnings("nls")\r
8c8bf09f
ASL
17public class Tracer {\r
18\r
12c155f5
FC
19 private static String pluginID = TmfCorePlugin.PLUGIN_ID;\r
20\r
21 static Boolean ERROR = Boolean.FALSE;\r
22 static Boolean WARNING = Boolean.FALSE;\r
23 static Boolean INFO = Boolean.FALSE;\r
24\r
25 static Boolean COMPONENT = Boolean.FALSE;\r
26 static Boolean REQUEST = Boolean.FALSE;\r
27 static Boolean SIGNAL = Boolean.FALSE;\r
28 static Boolean EVENT = Boolean.FALSE;\r
29\r
30 private static String LOGNAME = "trace.log";\r
ce2388e0 31 private static BufferedWriter fTraceLog = new BufferedWriter(new OutputStreamWriter(System.out));\r
12c155f5
FC
32\r
33 private static BufferedWriter openLogFile(String filename) {\r
34 BufferedWriter outfile = null;\r
35 try {\r
36 outfile = new BufferedWriter(new FileWriter(filename));\r
37 } catch (IOException e) {\r
38 e.printStackTrace();\r
39 }\r
40 return outfile;\r
41 }\r
42\r
43 public static void init() {\r
44\r
45 String traceKey;\r
46 boolean isTracing = false;\r
47\r
48 traceKey = Platform.getDebugOption(pluginID + "/error");\r
49 if (traceKey != null) {\r
50 ERROR = (Boolean.valueOf(traceKey)).booleanValue();\r
51 isTracing |= ERROR;\r
52 }\r
53\r
54 traceKey = Platform.getDebugOption(pluginID + "/warning");\r
55 if (traceKey != null) {\r
56 WARNING = (Boolean.valueOf(traceKey)).booleanValue();\r
57 isTracing |= WARNING;\r
58 }\r
59\r
60 traceKey = Platform.getDebugOption(pluginID + "/info");\r
61 if (traceKey != null) {\r
62 INFO = (Boolean.valueOf(traceKey)).booleanValue();\r
63 isTracing |= INFO;\r
64 }\r
65\r
66 traceKey = Platform.getDebugOption(pluginID + "/component");\r
67 if (traceKey != null) {\r
68 COMPONENT = (Boolean.valueOf(traceKey)).booleanValue();\r
69 isTracing |= COMPONENT;\r
70 }\r
71\r
72 traceKey = Platform.getDebugOption(pluginID + "/request");\r
73 if (traceKey != null) {\r
74 REQUEST = (Boolean.valueOf(traceKey)).booleanValue();\r
75 isTracing |= REQUEST;\r
76 }\r
77\r
78 traceKey = Platform.getDebugOption(pluginID + "/signal");\r
79 if (traceKey != null) {\r
80 SIGNAL = (Boolean.valueOf(traceKey)).booleanValue();\r
81 isTracing |= SIGNAL;\r
82 }\r
83\r
84 traceKey = Platform.getDebugOption(pluginID + "/event");\r
85 if (traceKey != null) {\r
86 EVENT = (Boolean.valueOf(traceKey)).booleanValue();\r
87 isTracing |= EVENT;\r
88 }\r
89\r
90 // Create trace log file if needed\r
91 if (isTracing) {\r
92 fTraceLog = openLogFile(LOGNAME);\r
93 }\r
94 }\r
95\r
96 public static void stop() {\r
ce2388e0 97 if (fTraceLog == null) {\r
12c155f5 98 return;\r
ce2388e0 99 }\r
12c155f5
FC
100\r
101 try {\r
102 fTraceLog.close();\r
103 fTraceLog = null;\r
104 } catch (IOException e) {\r
105 e.printStackTrace();\r
106 }\r
107 }\r
108\r
109 // Predicates\r
110 public static boolean isErrorTraced() {\r
111 return ERROR;\r
112 }\r
113\r
114 public static boolean isComponentTraced() {\r
115 return COMPONENT;\r
116 }\r
117\r
118 public static boolean isRequestTraced() {\r
119 return REQUEST;\r
120 }\r
121\r
122 public static boolean isSignalTraced() {\r
123 return SIGNAL;\r
124 }\r
125\r
126 public static boolean isEventTraced() {\r
127 return EVENT;\r
128 }\r
129\r
130 // Tracers\r
131 public static void trace(String msg) {\r
132 long currentTime = System.currentTimeMillis();\r
133 StringBuilder message = new StringBuilder("[");\r
134 message.append(currentTime / 1000);\r
135 message.append(".");\r
136 message.append(String.format("%1$03d", currentTime % 1000));\r
137 message.append("] ");\r
138 message.append(msg);\r
9b635e61
FC
139// System.out.println(message);\r
140\r
12c155f5
FC
141 if (fTraceLog != null) {\r
142 try {\r
143 fTraceLog.write(message.toString());\r
144 fTraceLog.newLine();\r
145 fTraceLog.flush();\r
146 } catch (IOException e) {\r
147 e.printStackTrace();\r
148 }\r
149 }\r
150 }\r
151\r
152 public static void traceComponent(ITmfComponent component, String msg) {\r
153 String message = ("[CMP] Thread=" + Thread.currentThread().getId() + " Cmp=" + component.getName() + " " + msg);\r
154 trace(message);\r
155 }\r
156\r
157 public static void traceRequest(ITmfDataRequest<?> request, String msg) {\r
158 String message = ("[REQ] Req=" + request.getRequestId()\r
159 + (request.getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? " (BG)" : " (FG)") + " Thread="\r
160 + Thread.currentThread().getId() + " Type=" + simpleType(request.getClass().getName()) + " Index="\r
161 + request.getIndex() + " NbReq=" + request.getNbRequested()\r
162 + (request instanceof ITmfEventRequest ? " Range=" + ((ITmfEventRequest<?>) request).getRange() : "")\r
163 + " DataType=" + request.getDataType().getSimpleName() + " " + msg);\r
164 trace(message);\r
165 }\r
166\r
167 private static String simpleType(String type) {\r
168 return type.substring(type.lastIndexOf('.') + 1);\r
169 }\r
170\r
171 public static void traceSignal(TmfSignal signal, String msg) {\r
172 String message = ("[SIG] Type=" + signal.getClass().getSimpleName() + " Target=" + msg);\r
173 trace(message);\r
174 }\r
175\r
72f1e62a 176 public static void traceEvent(ITmfDataProvider<?> provider, ITmfDataRequest<?> request, ITmfEvent data) {\r
12c155f5
FC
177 String message = ("[EVT] Provider=" + provider.toString() + ", Req=" + request.getRequestId() + ", Event=" + data\r
178 .toString());\r
179 trace(message);\r
180 }\r
181\r
182 public static void traceError(String msg) {\r
183 String message = ("[ERR] Thread=" + Thread.currentThread().getId() + " " + msg);\r
184 trace(message);\r
185 }\r
186\r
187 public static void traceInfo(String msg) {\r
188 String message = ("[INF] Thread=" + Thread.currentThread().getId() + " " + msg);\r
189 trace(message);\r
190 }\r
9b635e61 191\r
8c8bf09f 192}\r
This page took 0.041295 seconds and 5 git commands to generate.