Logging 使用wsadmin检索WebSphereJVM日志

Logging 使用wsadmin检索WebSphereJVM日志,logging,jvm,websphere,jython,wsadmin,Logging,Jvm,Websphere,Jython,Wsadmin,我试图通过wsadmin检索Websphere服务器日志。当连接到ND时,我可能必须从没有SSH访问权限的远程节点检索日志 因为我可以使用管理控制台查看日志,所以我想知道是否可以使用wsadmin检索日志 我已经做到了以下几点: s1 = AdminConfig.getid('/Node:'+nodeName+'/Server:'+serverName) log = AdminConfig.showAttribute(s1, 'outputStreamRedirect') 对于

我试图通过wsadmin检索Websphere服务器日志。当连接到ND时,我可能必须从没有SSH访问权限的远程节点检索日志

因为我可以使用管理控制台查看日志,所以我想知道是否可以使用wsadmin检索日志

我已经做到了以下几点:

    s1 = AdminConfig.getid('/Node:'+nodeName+'/Server:'+serverName)
    log = AdminConfig.showAttribute(s1, 'outputStreamRedirect')
对于每台服务器,这会打印如下内容:

[baseHour 24]
[fileName ${SERVER_LOG_ROOT}/SystemOut.log]
[formatWrites true]
[maxNumberOfBackupFiles 5]
[messageFormatKind BASIC]
[rolloverPeriod 24]
[rolloverSize 1]
[rolloverType SIZE]
[suppressStackTrace false]
[suppressWrites false]
[baseHour 24]
[fileName ${SERVER_LOG_ROOT}/SystemErr.log]
[formatWrites true]
[maxNumberOfBackupFiles 5]
[messageFormatKind BASIC]
[rolloverPeriod 24]
[rolloverSize 1]
[rolloverType SIZE]
[suppressStackTrace false]
[suppressWrites false]

wsadmin中是否有任何对象可以帮助我检索该fileName属性的内容

这适用于单个服务器,但对于多个服务器和配置,编辑起来很容易

它定位日志路径,并发送一个ant作业来加载其内容,然后获取ant日志

解析文件以仅获取日志应该很容易

from java.lang import String
import jarray

serverName = sys.argv[0]
s1 = AdminConfig.getid('/Server:'+serverName)
log = AdminConfig.showAttribute(s1, 'outputStreamRedirect')
errLog = AdminConfig.showAttribute(s1, 'errorStreamRedirect')
adminOperations = AdminControl.queryNames('WebSphere:*,type=AdminOperations,process='+serverName).splitlines()[0]
sysOutLogPath = AdminControl.invoke(adminOperations, 'expandVariable', [AdminConfig.showAttribute(log, 'fileName')])
#sysErrLogPath = AdminControl.invoke(adminOperations, 'expandVariable', [AdminConfig.showAttribute(errLog, 'fileName')])
fileContent_outLog = '<project name="printLog" default="printLog"><target name="printLog"><loadfile property="logContents" srcFile="'+sysOutLogPath+'"/></target></project>'
str = String(fileContent_outLog)
bytes = str.getBytes()
antAgent = AdminControl.makeObjectName(AdminControl.queryNames('WebSphere:*,type=AntAgent,process='+serverName))
AdminControl.invoke_jmx(antAgent, 'putScript', [String('printLog.xml'),bytes], jarray.array(['java.lang.String', '[B'], String))
AdminControl.invoke_jmx(antAgent, 'invokeAnt', [jarray.array([], String), String('printLog.xml'), String('printLog')], jarray.array(['[Ljava.lang.String;', 'java.lang.String', 'java.lang.String'], String))
logBytes = AdminControl.invoke_jmx(antAgent, 'getLastLog', [],jarray.array([],  String))
tempFile = open('./'+serverName+'.SystemOut.log','w')
tempFile.write(String(logBytes))
tempFile.close()
从java.lang导入字符串
导入jarray
serverName=sys.argv[0]
s1=AdminConfig.getid('/Server:'+serverName)
log=AdminConfig.showtattribute(s1,“outputStreamRedirect”)
errLog=AdminConfig.showAttribute(s1,“errorStreamRedirect”)
adminOperations=AdminControl.queryNames('WebSphere:*,type=adminOperations,process='+serverName)。拆分行()[0]
sysOutLogPath=AdminControl.invoke(adminOperations,'expandVariable',[AdminConfig.showtattribute(log,'fileName'))
#sysErrLogPath=AdminControl.invoke(adminOperations,'expandVariable',[AdminConfig.showtattribute(errLog,'fileName'))
文件内容\输出日志=“”
str=字符串(文件内容\输出日志)
bytes=str.getBytes()
antAgent=AdminControl.makeObjectName(AdminControl.queryNames('WebSphere:*,type=antAgent,process='+serverName))
AdminControl.invoke_jmx(antage,'putScript',[String('printLog.xml'),bytes],jarray.array(['java.lang.String','B'],String))
AdminControl.invoke_jmx(antAgent,'invokeAnt',[jarray.array([],String),String('printLog.xml'),String('printLog')),jarray.array(['[Ljava.lang.String;','java.lang.String','java.lang.String'],String]))
logBytes=AdminControl.invoke_jmx(antAgent,'getLastLog',[],jarray.array([],String))
tempFile=open('./'+serverName+'.SystemOut.log',w')
tempFile.write(字符串(logBytes))
tempFile.close()文件