У меня есть несколько серверов Windows, на которых работают различные версии Tomcat 8, и мне нужно иметь возможность получить путь журнала Tomcat в сценарии PowerShell, чтобы выполнять административные функции с помощью этого сценария.
Tomcat якобы предоставляет logging API содержащий эту информацию, но мне не удалось получить к ней доступ с помощью PowerShell (и подозреваю, что это далеко не самый простой способ получить то, что я хочу в любом случае). Однако я заметил, что, по крайней мере, для моих серверов Tomcat, путь к журналу является подпапкой пути установки приложения, например:
C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs
Итак, как я могу программно получить этот путь к журналу из моего сценария PowerShell?
При безуспешном поиске файла конфигурации или параметра реестра, который может содержать путь к каталогу журнала, я наткнулся на раздел реестра, который содержит путь установки самого приложения 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
}
Приносим извинения за то, что не ответили на ваш вопрос напрямую.
Я бы рекомендовал использовать отдельную CATALINA_BASE, как и для нескольких экземпляров. Вы можете свободно выбрать этот путь, и каталог журналов находится ниже этого пути.
Видеть https://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt для дополнительной информации.
Кроме того, это должно упростить обновление Tomcat.