im obecnie jest w trakcie tworzenia aplikacji webapi2, a także w etapach przeprowadzania moich dzienników za pomocą NLog.konfigurowanie układu NLog tak, aby wyświetlał wszystkie wpisy kontekstu zdarzeń
w mojej aplikacji i zalogować się w sposób klucz-wartość przy użyciu słownika LogEventInfo.Properties w ten sposób:
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);
wszystko działa poprawnie, ale nie mogę wydawać się znaleźć sposób, aby uczynić go tak układ drukuje wszystkie pozycje klucz-wartość znajdujące się w słowniku LogEventInfo.Properties.
pozwala założyć, że mój cel jest plikiem, a następnie muszę jednoznacznie wymienić nazwę klucza, czy istnieje sposób renderowania go w celu wyświetlenia całej zawartości słownika? to jak to zrobić dzisiaj, gdzie mogę się zalogować tylko wpisy znam:
<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}" />
Spowoduje to wydrukowanie właściwości w formacie '[key] = [value]' zamiast tylko właściwości drukowania. – vendettamit
Format można dostosować, używając "[wartość]", ponieważ format będzie drukować tylko wartości właściwości – pkmiec
Nie! Zakładałem to samo, ale jeśli patrzysz na setter właściwości Format, to sprawdza on zarówno [klucz], jak i [wartość], więc rzuci wyjątek, jeśli brakuje jednego z nich. zobacz https://github.com/NLog/NLog/blob/master/src/NLog/LayoutRenderers/AllEventPropertiesLayoutRenderer.cs – vendettamit