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

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

Tomcat предположительно предоставляет API журналирования , содержащий эту информацию, но мне не удалось получить к нему доступ с помощью PowerShell (и подозреваю, что это далеко не самый простой способ получить то, что я хочу в любом случае). Однако я заметил, что, по крайней мере, для моих серверов Tomcat, путь к журналу является подпапкой пути установки приложения, например:

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

Так, как я могу программно получить этот путь журнала из моего сценария PowerShell?

1
задан 2 June 2017 в 22:41
2 ответа

При безуспешном поиске файла конфигурации или параметра реестра, который может содержать путь к каталогу журнала, я наткнулся на раздел реестра, который содержит путь установки самого приложения Tomcat и в сочетании со знаниями что папка журнала, которую я ищу, находится в подпапке с именем logs , у меня достаточно информации для моего сценария, чтобы создать путь ведения журнала.

enter image description here

Этот ключ реестра будет в предсказуемом местоположение в реестре, а имя / свойство «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
ответ дан 3 December 2019 в 18:30

Приносим извинения за то, что не ответили на ваш вопрос напрямую.

Я бы рекомендовал использовать отдельную CATALINA_BASE, как и для нескольких экземпляров. Вы можете выбрать этот путь по своему усмотрению, и каталог журналов находится ниже этого пути.

См. https://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt для получения дополнительной информации.

Кроме того, это должно упростить обновление Tomcat.

1
ответ дан 3 December 2019 в 18:30

Теги

Похожие вопросы