I log sono un modo intelligente di comunicare con l'agent che esegue le nostre pipeline. Ci permettono infatti non solo di leggere ciò che succede a livello della pipeline stessa, per capire l'output dei task che stiamo eseguendo, ma consentono anche di interagire ed impartire ordini agli agent stessi. Il meccanismo di logging di Azure DevOps, infatti, è un po' complesso e oltre al classico messaggio di testo scritto tramite echo o Write-Host, possiamo impartire degli ordini nel formato seguente:
##vso[area.action property1=value;property2=value;...]message
Se vogliamo, ad esempio, cambiare solamente la formattazione come vedremo a breve, possiamo usare la sintassi semplificata:
##[command]message
Questo messaggio infatti verrà interpretato come una banale stringa in uno script di PowerShell/Bash eseguito localmente, mentre in Azure DevOps verrà interpretato per eseguire il comando specificato. Tra i comandi disponibili troviamo:
##[group]Beginning of a group ##<div class="warning">Warning message ##[error]Error message ##[section]Start of a section ##[debug]Debug text ##[command]Command-line being run ##[endgroup]
Il primo comando, [group] viene usato per creare una sezione collassabile e deve essere seguito dal tag [endgroup] per identificare la chiusura della sezione, mentre i più classici, ovvero warning ed error possono essere utilizzati per mostrare messaggi, appunto, di warning (scritti in giallo) oppure errori (scritti in rosso) nella pipeline.
Il risultato di questi comandi è visibile nello screenshot:

Come si può vedere facilmente, questi log con formattazione consentono una lettura molto più efficiente ed immediata di eventuali errori o note che poi, ad esempio, vengono visualizzate anche nel summary della build stessa, rendendo l'esperienza di debugging molto più semplice.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire il colore CSS con HWB
Collegare applicazioni server e client con .NET Aspire
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestione file Javascript in Blazor con .NET 9
Applicare un filtro per recuperare alcune issue di GitHub
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Utilizzare Copilot con Azure Cosmos DB
La gestione della riconnessione al server di Blazor in .NET 9
Usare le navigation property in QuickGrid di Blazor
Rendere le variabili read-only in una pipeline di Azure DevOps
Eliminare una project wiki di Azure DevOps