Log4Net: запись объекта C # (кроме исключения) в журнал? - PullRequest
4 голосов
/ 25 мая 2011

Я видел в Log4Net, что вы можете написать сообщение и передать в качестве второго параметра объект исключения.

Можно ли отправить объект другого типа в log4net, чтобы я мог видеть значения в моем журналемой объект?

Если у меня есть экземпляр класса, который заполнен, и я пошел отправлять экземпляр для регистрации,

Возможно ли это вообще?

Мне бы очень хотелось посмотреть учебник, но я не могу найти один

Любая помощь, действительно ценная

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

Вы можете реализовать пользовательский форматер . (Попробуйте сначала поискать в Google, чтобы убедиться, что кто-то сделал что-то подходящее вашему сценарию).

1 голос
/ 25 мая 2011

Вы всегда можете написать это самостоятельно, что дает немного контроля.Вы можете использовать Reflection , чтобы получить тип объекта, получить свойства и записать их как Debug или Info.

Вы можете дополнительно расширить метод, который дает вам свойства, чтобы выписывать только то, что вы хотите, и рекурсивно запускать n-уровни глубоко в объекте или до тех пор, пока у него нет свойств.

0 голосов
/ 25 мая 2011

Различные методы интерфейса ILog принимают объект в качестве параметра «сообщения», поэтому самый простой способ получить «запись» объекта в log4net - это реализовать метод ToString().

Другойможно было бы обеспечить реализацию IObjectRenderer.Я не уверен, как зарегистрировать это в файле конфигурации, но this показывает, как это сделать в коде.

Если вам нужен объект как отдельный объект в appender, вам следует использовать контекст события журнала (также хорошо работает с реализацией ToString().

...