【问题标题】:Retrieve Websphere JVM logs using wsadmin使用 wsadmin 检索 Websphere JVM 日志
【发布时间】:2016-05-23 23:36:23
【问题描述】:

我正在尝试通过 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 属性的内容?

【问题讨论】:

    标签: logging jvm websphere jython wsadmin


    【解决方案1】:

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

    定位日志路径,发送一个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()
    

    【讨论】:

      猜你喜欢
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      相关资源
      最近更新 更多