Como posso obter o caminho do log do Tomcat, usando o PowerShell?

1

Eu tenho vários servidores Windows executando várias versões do Tomcat 8, e preciso conseguir o caminho de log do Tomcat em um script do PowerShell para executar funções administrativas com esse script.

O Tomcat supostamente fornece uma API de registro contendo essas informações, mas eu não tive nenhuma sucesso acessando-o com o PowerShell (e suspeito que isso esteja longe da maneira mais fácil de obter o que eu quero em qualquer evento). No entanto, notei que, pelo menos para meus servidores Tomcat, o caminho de log é uma subpasta do caminho de instalação do aplicativo, como:

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

Então, como posso obter esse caminho de log programaticamente do meu script do PowerShell?

    
por HopelessN00b 02.06.2017 / 21:41

2 respostas

2

Enquanto procurava, sem sucesso, por um arquivo de configuração ou configuração de registro que pudesse conter o caminho do diretório de log, me deparei com uma chave de registro que contém o caminho de instalação do aplicativo Tomcat e combinava com o conhecimento da pasta de log. Depois está em uma subpasta de que, chamado logs , eu tenho informações suficientes para o meu script para criar o caminho de registro.

Essachavedoregistroestaráemumlocalprevisívelnoregistro,eonome/propriedade"InstallPath" será exclusivo dentro desse local, para que eu possa simplesmente fazer uma pesquisa recursiva e combinar "InstallPath" para extrair a pasta de instalação para o Tomcat e inclua \logs para obter minha pasta de registro.

Depois de adicionar uma verificação básica de tratamento de erros, parece que:

$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
    }
    
por 02.06.2017 / 22:12
1

Desculpas por não responder diretamente à sua pergunta.

Eu recomendaria usar um CATALINA_BASE separado como você faria para várias instâncias. Você pode escolher esse caminho livremente e o log log é log abaixo desse caminho.

Consulte o link para obter mais informações.

Além disso, deve facilitar a atualização do tomcat.

    
por 03.06.2017 / 11:08