首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wsadmin检索Websphere JVM日志

使用wsadmin检索Websphere JVM日志
EN

Stack Overflow用户
提问于 2016-05-23 23:36:23
回答 1查看 874关注 0票数 2

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

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

我设法做到了以下几点:

代码语言:javascript
复制
    s1 = AdminConfig.getid('/Node:'+nodeName+'/Server:'+serverName)
    log = AdminConfig.showAttribute(s1, 'outputStreamRedirect')

对于每个服务器,都会打印如下所示:

代码语言:javascript
复制
[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属性的内容吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 22:35:51

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

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

解析文件只获取日志应该很容易。

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37402191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档