我有许多运行不同版本 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 变得更容易。