如何使用 PowerShell 获取 Tomcat 的日志路径?

如何使用 PowerShell 获取 Tomcat 的日志路径?

我有许多运行不同版本 Tomcat 8 的 Windows 服务器,我需要能够在 PowerShell 脚本中获取 Tomcat 日志路径,以便使用该脚本执行管理功能。

Tomcat 据称提供了日志记录 API包含此信息,但我无法使用 PowerShell 成功访问它(并且怀疑这无论如何都不是获得我想要的东西的最简单方法)。但是,我注意到,至少对于我的 Tomcat 服务器来说,日志路径是应用程序安装路径的子文件夹,例如:

C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs

那么,如何以编程方式从我的 PowerShell 脚本中获取此日志路径?

答案1

在搜索可能包含日志目录路径的配置文件或注册表设置失败时,我偶然发现了一个包含 Tomcat 应用程序本身安装路径的注册表项,并且结合我所追踪的日志文件夹位于其子文件夹中的知识,名为logs,我有足够的信息让我的脚本创建日志路径。

在此处输入图片描述

此注册表项将位于注册表中的可预测位置,并且“InstallPath”名称/属性在该位置内是唯一的,因此我可以简单地进行递归搜索并匹配“InstallPath”以提取 Tomcat 的安装文件夹,然后附加\logs以获取我的日志文件夹。

添加基本​​的错误处理检查后,如下所示:

$FoundRegKey = $null
$ApacheRegKeyExists = (Test-Path "HKLM:\Software\Apache Software Foundation")

If ($ApacheRegKeyExists)
{
    Get-ChildItem "HKLM:\Software\Apache Software Foundation" -Recurse -ErrorAction SilentlyContinue | 
    ForEach-Object
    {
        If ($_.Property -match "InstallPath") 
        {$FoundRegKey = Get-ItemProperty $_.pspath | Select InstallPath}
    }
}
Else
{
    Write-Host "Can't find Tomcat software keys in registry, exiting."
    Exit
}

If ($FoundRegKey)
    {
    $logfolder=($FoundRegKey.InstallPath+"\logs")
    }
Else
    {
    Write-Host "Can't find Tomcat install path in registry, exiting."
    Exit
    }

答案2

抱歉,我没有直接回答您的问题。

我建议使用单独的 CATALINA_BASE,就像多实例一样。您可以自由选择该路径,日志目录是该路径下的日志。

https://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt了解更多信息。

另外,它可以让更新 tomcat 变得更容易。

相关内容