im attualmente in fase di sviluppo di un'applicazione webapi2 e nelle fasi di esecuzione dei miei registri tramite NLog.configurazione del layout di NLog per mostrare tutte le voci di contesto evento
nella mia applicazione i log in un modo di valori-chiave utilizzando il dizionario LogEventInfo.Properties in questo modo:
thisController.LogParams.Add("ControllerName",controllerName);
thisController.LogParams.Add("ActionName", actionName);
thisController.LogParams.Add("TotalTime", actionWatch.ElapsedMilliseconds);
LogEventInfo logEvent = new LogEventInfo()
{
Message = string.IsNullOrEmpty(thisController.LogMessage)? "Finished Successfuly":thisController.LogMessage,
Level = LogLevel.Info,
TimeStamp = DateTime.Now
};
logEvent.Properties.Merge(thisController.LogParams);
logger.Log(logEvent);
tutto funziona bene, ma i cant sembrano trovare il modo di rendere il layout in modo che stampa tutte le voci chiave-valore presenti nel dizionario LogEventInfo.Properties.
consente di presupporre che il mio obiettivo è un file, quindi devo menzionare esplicitamente il nome della chiave, c'è un modo per renderlo in grado di mostrare tutto il contenuto del dizionario? questo è come lo faccio oggi, dove posso accedere solo le voci che conosco di:
<target name="f1"
xsi:type="File"
fileName="${basedir}\logs\log.txt"
maxArchiveFiles="60"
archiveNumbering="Date"
archiveDateFormat="yyyyMMdd"
archiveEvery="Day"
layout="${longdate} : ${callsite:className=true:methodName=true} : ${event-context:item=ControllerName} : ${event-context:item=ActionName} : ${event-context:item=TotalTime} : ${message}" />
Questo stamperà le proprietà nel formato '[chiave] = [valore]' invece delle sole proprietà di stampa. – vendettamit
Il formato è personalizzabile, utilizzando "[valore]" poiché il formato stamperà solo i valori delle proprietà – pkmiec
No! Stavo assumendo lo stesso, ma se si guarda il setter della proprietà Format ha il controllo sia di [chiave] e [valore] in modo che getti eccezione di uno di loro manca. vedere https://github.com/NLog/NLog/blob/master/src/NLog/LayoutRenderers/AllEventPropertiesLayoutRenderer.cs – vendettamit