i am trying to use WLDF to capture the status of the weblogic server.
i am trying to use the action 'DisplayArgumentAction' to capture the method parameters of monitor JDBC_Before_Execute.
When i check the log in the admin console, the argument is captured but encoded in unknown format.(base64 encoded?)
the WLDF document don't mention the data format.
my question is: how can i decoded the data to human readable form for checking?
WLDF instrumentation introduced a general change to the arguments capture support that treats arguments as sensitive and not captured unless explicitly marked as not being sensitive.
If the values that you are seeing are "******", that is due to that change.
If that is the case, you can define a custom monitor with a pointcut expression that marks the explicit arguments they want to see with "%" .
The documentation for defining pointcuts for custom monitors and the syntax is at:
The % is not allowed on ... or *, so it must be explicit on the arguments that are not sensitive.
"call(* +java.sql.Statement execute(% java.lang.String) OR call(* +java.sql.Statement execute(% java.lang.String, % int))"
If that is not what you are seeing, what version of WebLogic are you using?
i wrote this monitor
<pointcut>call(* com.i4c.antares.wizardeditor.web.* next(java.lang.String))</pointcut>
but in this way weblogic doesn't show me my monitor. Whereas in this way it shows me '*****,*****':
<pointcut>call(* com.i4c.antares.wizardeditor.web.* next(...))</pointcut>
is there anybody that can help me???thanks
From the docs link posted above:
A % (percent character) prefix designates the value of a non-static class instantiation, parameter, or return specification as not containing nor exposing sensitive information. The use of this operator is particularly useful with the DisplayArgumentsAction action, which captures method arguments or return values. If this prefix character is not explicitly used, an asterisk string is substituted for the value that is returned; this behavior ensures that sensitive data in your application is not inadvertently transmitted when an instrumentation event captures input arguments to, or return values from, a joinpoint.
The % operator cannot be applied to an ellipsis or to a wildcarded type within a pointcut expression.
So, try something like mycall(%arg1, %arg2, arg3). In that example arg1 and arg2 will display, but arg3 will be regarded as sensitive and masked with asterisks. As noted above, you can not wildcard arguments with %.
Ok, thanks...i'll try it.
I have another question...
i defined 2 two monitor: a DisplayArgumentsAction and a TraceElapsedTimeAction to take arguments and time method. I would send a trap only if a payload is greater than a particular value and arguments is another particular value.
Is it possible to do? (my doubt is that is impossible to put in AND two monitor)....
actually i want to know what data is written to the DB table (as i want to write a simple program to facilitate
troublshoot the performance).. (my company have >100 weblogic instances running, i want to have a simple
tool for system support/troubleshooting...)
so i need to know how to interpret the data.
And i later find that the PAYLOAD column (for tracetimeelapse) store a java Long object, while the ARGUMENT
column store string (as binary)...
so, i can't use simple SQL statement only, for inspecting the record..