У меня есть несколько серверов Windows, на которых запущены различные версии Tomcat 8, и мне нужно иметь возможность получить путь к журналу Tomcat в сценарии PowerShell для выполнения административных функций с помощью этого сценария.
Tomcat предположительно предоставляет 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.