I have following btrace script. I would like to record entry and exit of functions in a specific class.
..
package com.sun.btrace.samples;
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.Profiler;
import com.sun.btrace.annotations.*;
@BTrace class Profiling {
@Property
Profiler swingProfiler = BTraceUtils.Profiling.newProfiler();
@OnMethod(
clazz="com.pkg.classname",
method="/.*/")
void entry(@ProbeMethodName(fqn=true) String probeMethod) {
BTraceUtils.print("Entry" );
BTraceUtils.println(BTraceUtils.timestamp() );
BTraceUtils.println(probeMethod);
}
@OnMethod(
clazz="com.pkg.classname",
location=@Location(value=Kind.RETURN)
)
void exit(@ProbeMethodName(fqn=true) String probeMethod, @Duration long duration) {
BTraceUtils.print("Exit:" );
BTraceUtils.println(BTraceUtils.timestamp() );
BTraceUtils.println(probeMethod);
}
}
This gives outout on the console. How could I write the result to a file? Btrace does not allow to create new objects.
(Obvious work around is redirect to a file. Another choice is to use VisualVM btrace plugin - the output then goes to visualVM window. Note sure if it an handle very large output 500Mb or so.)
Thanks
You can start your application with BTrace agent (http://kenai.com/projects/btrace/pages/UserGuide#btrace-agent). Then you can specify scriptOutputFile argument to the agent and all output generated by calls to println etc. will go to the specified file instead of the stdout.