Public/Get-P1Log.ps1

function Get-P1Log {
    <#
    .Synopsis
    Get the logs for a tenant
 
    .Description
    Return the list of logs of their content.
 
    .Parameter Tenant
    The tenant name.
 
    .Parameters LogType
    logService, logManager or logWeb
 
    .parameters LogName
    The log name to display
 
    .parameters Wait
    Wait modification on log to display
 
    .Example
    # Get the list of logs
    Get-P1Log -Tenant Prod
 
    .Example
    # Get a log for logService and follow it
    Get-P1Log -Tenant Prod -LogType logService -LogName PlannerOneApplication.log -Wait
    #>

    [cmdletbinding()]
    param( 
        [string] $Tenant,
        [string] $LogType,
        [string] $LogName,
        [switch] $Wait
    )
    Process
    {
        if (!(Test-Tenant $Tenant)) {
            Write-Warning "Tenant $Tenant does not exist."
            Write-Warning "Operation canceled."
            return
        }

        $path = Get-LogPathFromTenant $Tenant
        if ($LogType -ne "") {
            $path = $path + $LogType
            if (!(Test-Path $path)) {
                Write-KO "The log type $LogType does not exist."
                return
            }
        }

        if ($LogName -eq "") {
            $logs = Get-ChildItem -Recurse $path -Filter *.log*
            $logInfos = @()
            foreach ($log in $logs) {
                $logInfo = new-object psobject -property @{
                    "LogType" = $log.Directory.Name;
                    "LogName" = $log.Name;
                }

                $logInfos += $logInfo
            }

            Write-Output $logInfos | Format-Table
        } else {
            $path = $path + "\" + $LogName
            if (!(Test-Path $path)) {
                Write-KO "Log $LogType $LogName does not exist"
                return
            } else {
                Get-Content $path -Wait:$Wait.IsPresent
            }
        }
    }
}