Назад | Перейти на главную страницу

Как я могу получить путь к журналу Tomcat с помощью PowerShell?

У меня есть несколько серверов 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.