Согласно документации Serilog, можно регистрировать словарь и будет деструктурировать его, включая глубокую деструктуризацию объектов.
Если это так, кто-нибудь знает, почему следующий код не работает должным образом:
public class ActionLoggingAttribute : ActionFilterAttribute
{
private ILogger _logger;
public ActionLoggingAttribute(ILogger<ActionLoggingAttribute> logger)
{
_logger = logger;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.ActionArguments.Count > 0)
{
_logger.LogInformation("Request parameters: {@parameters}", new Dictionary<string, object>(context.ActionArguments));
}
}
}
приводит к следующему результату:
{... "MessageTemplate":"Request parameters: {@parameters}","Properties":{"parameters":"[newCard(key), Namespace.ClassNameInsteadOfTheActualObject(value)]" ...}}
Вопросы :
- Это похоже на массив, а не на словарь. Почему? Также он содержит кавычки.
- Почему объект также не деструктурируется?
[{ "key": "someKeyname", "value": 1234}, { ... }]
- person Tseng   schedule 18.04.2017{"key1": "value1", "key2": "value2"}
. В моем случаеnewCard
является ключом, а объект, который не сериализуется должным образом, является значением. Как сейчас, он просто выглядит так, как будто он был сериализован как массив. - person DotnetProg   schedule 18.04.2017