Nell’implementazione di un progetto MVC mi è stato richiesto di effettuare il log delle attività, in particolare la possibilità di memorizzare un log sull’esecuzione delle chiamate alle singole Action.

La soluzione più ovvia poteva essere quella di creare una classe Model da utilizzare con Entity Framework per la memorizzazione del record (riportante un riferimento temporale dell’operazione effettuata). All’interno delle Action avrei avuto la necessità di inserire un riferimento al codice di scrittura del log.

Questo tipo di approccio, sicuramente funzionale, non rispecchia però le funzionalità che MVC ci mette a disposizione. La soluzione che ho adottato è stata quella di creare una nuova classe all’interno del progetto che eredita da ActionFilterAttribute. Questa classe rappresenta la classe base per gli attributi di un filtro.

In particolare ho effettuato l’override dei metodi

che vengono richiamati rispettivamente al momento dell’esecuzione della Action e al termine della sua esecuzione.

All’interno della proprietà

il framework riporterà il nome della action che è stata impostata come DataAnnotion nella singola Action.

A questo punto è sufficiente impostare sulle Action in cui vorremo effettuare il log, il nome dell’attributo da utilizzare:

In questo modo verranno richiamate le funzioni del nuovo attributo e all’interno della variabile

potremo reperire le informazioni che possono essere utilizzate per il log, come nell’esempio:

 

https://dotnettortona.net/wp-content/uploads/2015/08/lg_aspmvc5.pnghttps://dotnettortona.net/wp-content/uploads/2015/08/lg_aspmvc5-150x150.pngDotNetMicrosoft MVCActionFilterAttribute,Log,MVCNell'implementazione di un progetto MVC mi è stato richiesto di effettuare il log delle attività, in particolare la possibilità di memorizzare un log sull'esecuzione delle chiamate alle singole Action. La soluzione più ovvia poteva essere quella di creare una classe Model da utilizzare con Entity Framework per la memorizzazione del...La prima Community su .NET a Tortona (AL)