【IT168 技术文章】
对于MQ的Java组件,例如MQ资源管理器(Eclipse环境)和MQ Transport for SOAP的java实施,诊断信息是使用标准的MQ诊断设施或java诊断类来输出的。此上下文的诊断信息由跟踪、首次故障数据捕获(FFDC)和错误消息组成。
可以选择使用MQ设施还是java类来生成此信息。如果本地有MQ诊断设施可用。就尽量使用这些设施。
在以下情况下需要使用java诊断:
1、在有队列管理器的系统上,如果队列管理器与正在运行的软件是分开管理的。
2、要减少MQ跟踪的性能开销
MQ的java进程使用了2个系统属性:
1、系统属性com.ibm.mq.commonservices指定一个标准的java属性文件,该文件中有几行代码可用于配置诊断输出。
2、系统属性com.ibm.mq.commonservices.diagid将跟踪和FFDC文件与创建他们的进程关联。
com.ibm.mq.commonservices:
Diagnostics.MQ=enabled|disabled
将要使用MQ诊断吗?如果启用了这个属性,诊断输出将与其他MQ组件的诊断输出一样;而跟踪 输出则由strmqtrc和endmqtrc命令中参数来控制,默认值是enabled。
Diagnostics.Java=options
使用java跟踪来跟踪哪个组件。选项是explorer,soap和wmqjavaclasses中的一个或多个, 由逗号分隔。其中explorer表示诊断来自MQ资源管理器,soap表示诊断来自MQTransport for SOAP,而wmqjavaclasses表示诊断来自底层MQ java类。缺省情况不跟踪任何组件。
Diagnostics.Java.Trace.Destination.File=enabled|disabled
是否将java跟踪写入文件。如果未设置diagnostics,java将忽略此属性。缺省是disabled。
Diagnostics.Java.Trace.Detail=high|medium|low
java跟踪的详细级别。high和medium与MQ跟踪中使用的一样,但low是java跟踪独有的。如 果没有设置diagnostics.java将忽略此属性。缺省值是medium。
Diagnostics.Java.Trace.Destination.Console=enabled|disabled
是否将java跟踪写入系统控制台。如果未设置diagnostics,java将忽略此属性。缺省是 disabled
Diagnostics.Java.Trace.Destination.Pathname=dirname
将写入java跟踪的目录。如果没有设置diagnostic.java或 diagnostics.java.trace.desctination.file=disabled,将忽略此属性。在unix上缺省是/var/mqm/trace否则将是java控制台system.err。在windows缺省是系统控制台。
Diagnostics.Java.FFDC.Destination.Pathname=dirname
将写入java FFDC输出的目录。缺省是当前工作目录
Diagnostics.Java.Errors.Destination.Filename=filename
将写入java错误消息的标准文件名。缺省值是当前工作目录中的AMQJAVA.LOG
以下是com.ibm.mq.commonservices属性文件样本
#
#BaseWebSphereMQdiagnosticsaredisabled
#
Diagnostics.MQ=disabled
#
#JavadiagnosticsforWebSphereMQTransportforSOAP
#andtheWebSphereMQJavaClassesarebothenabled
#
Diagnostics.Java=soap,wmqjavaclasses
#
#HighdetailJavatrace
#
Diagnostics.Java.Trace.Detail=high
#
#Javatraceiswrittentoafileandnottotheconsole.
#
Diagnostics.Java.Trace.Destination.File=enabled
Diagnostics.Java.Trace.Destination.Console=disabled
#
#DirectoryforJavatracefile
#
Diagnostics.Java.Trace.Destination.Pathname=c:\\tracedir
#
#DirectoryforFirstFailureDataCapture
#
Diagnostics.Java.FFDC.Destination.Pathname=c:\\ffdcdir
#
#Directoryforerrorlogging
#
Diagnostics.Java.Errors.Destination.Filename=c:\\errorsdir\\SOAPERRORS.LOG
#
JAVA跟踪和FFDC文件
在对MQ资源管理器或MQ Transport for soap生成java跟踪时,跟踪将被写入一个名称格式为AMQ.diagid.counter.TRC的文件,其中diagid是与此java进程关联的系统属性com.ibm.mq.commonservices.diagid的值,而counter是一个大于或等于0的整数。名称中所有字母都是大写这样符合MQ跟踪使用的命名约定。
如果不指定com.ibm.mq.commonservices.diagid,那么diagid的值就是格式为YYYYMMDDhhmmssmmm的当前时间。
MQ java类的名称将基于等效的MQ资源管理器或SOAP java跟踪文件来确定。区别在于如果名称格式为AMQ.diagid.counter.JC.TRC,java类的名称在字符串.trc前还加有字符串.JC
所有跟踪字符集均采用UTF-8