2010-09-15 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug287563
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf / src / org / eclipse / linuxtools / tmf / Tracer.java
CommitLineData
8c8bf09f
ASL
1package org.eclipse.linuxtools.tmf;\r
2\r
550d787e
FC
3import java.io.BufferedWriter;\r
4import java.io.FileWriter;\r
5import java.io.IOException;\r
6\r
8c8bf09f 7import org.eclipse.core.runtime.Platform;\r
550d787e
FC
8import org.eclipse.linuxtools.tmf.component.ITmfComponent;\r
9import org.eclipse.linuxtools.tmf.component.ITmfDataProvider;\r
10import org.eclipse.linuxtools.tmf.event.TmfData;\r
11import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;\r
8c8bf09f
ASL
12\r
13public 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
This page took 0.033846 seconds and 5 git commands to generate.