[SCRIPT] Controllare in tempo reale error.log con Windows

Rispondi
Roberto
Amministratore
Messaggi: 161
Iscritto il: 19/12/2009, 19:30

[SCRIPT] Controllare in tempo reale error.log con Windows

Messaggio da Roberto »

Ho avuto l'esigenza di dover controllare in real-time tramite shell un file di log degli errori di apache di una versione di XAMPP installata su un sistema operativo Windows 10.

Poiché tramite Shell di Windows (il caro CMD) non esiste il comando Linux "tail -f", cercando in rete ho trovato la seguente soluzione attraverso l'utilizzo di PowerShell, ecco come fare:

1) Eseguite la shell di Windows (il CMD, preferibilmente in modalita' amministratore)

2) Posizionatevi nella cartella in cui e' presente il file di log da monitorare in tempo reale, nel mio caso si trovava in c:\xampp\htdocs\mioprogetto\ e ci sono arrivato rapidamente digitando:

Codice: Seleziona tutto

cd c:\xampp\htdocs\mioprogetto\
3) Adesso che ci troviamo nella cartella in cui e' presente il file di log eseguiamo PowerShell digitando semplicemente:

Codice: Seleziona tutto

powershell
4) Dopo qualche istante riappare il cursore della shell e a questo punto digitate il comando:

Codice: Seleziona tutto

Get-Content .\NOME_FILE_LOG -tail 10 -wait
dove al posto di NOME_FILE_LOG dovete scrivere il nome del vostro file di log e se volete cambiando il numero 10 potete decidere quante righe visualizzare sulla shell (nel mio caso il file di log si chiamava errors_log.txt pertanto ho digitato il comando Get-Content .\errors_log.txt -tail 10 -wait ed ho scelto di visualizzare in tempo reale le 10 righe piu' recenti)

Roberto Basile
Roberto
Amministratore
Messaggi: 161
Iscritto il: 19/12/2009, 19:30

Re: Controllare in tempo reale il file error.log con Windows

Messaggio da Roberto »

Per verificare il funzionamento del comando che ho spiegato prima potete per esempio eseguire uno script Powershell che stampa ogni 5 secondi l'ora corrente su un file di log che state monitorando.

1) Create sulla root principale c:\ un file su cui il nostro script andra' a scrivere, chiamatelo per esempio "error.txt" (il file deve essere vuoto e potete crearlo tramite il blocco note di Windows)

2) Create sulla root principale c:\ un file chiamato "server.ps1" ed al suo interno scriviamo il codice per la stampa dell'orario (utilizzate sempre il blocco note di Windows)

Codice: Seleziona tutto

while (1) {
Get-date | add-content c:\error.txt
Start-sleep -millisecond 5000
}
3) Eseguite adesso la shell di Windows (CMD) in modalita' amministratore, digitate "powershell" e verifichiamo se abbiamo i permessi per eseguire lo script digitando il seguente comando:

Codice: Seleziona tutto

Get-ExecutionPolicy
Se la risposta e' "Restricted" dobbiamo modificare i permessi digitando:

Codice: Seleziona tutto

Set-ExecutionPolicy Unrestricted
4) Andiamo nella root principale ed eseguiamo lo script digitando il comando server.ps1

5) A questo punto non rimane altro che aprire un'altra shell di Windows e come spiegato in precedenza digitate:

Codice: Seleziona tutto

Get-Content c:\error.txt -tail 10 -wait
Dovreste vedere nella seconda shell l'orario aggiornato ogni 5 secondi.

Roberto Basile
Rispondi