Использование SimpleInjector Я вызываю container.Verify()
в конце моей конфигурации и получаю диагностическую информацию в отладчике, как описано в the documentation. Я хотел бы записать эту информацию в файл журнала. Есть ли доступ к нему программным способом или способ привязать регистратор или трассировщик к SimpleInjector?Могу ли я написать результаты диагностики SimpleInjectors в файл журнала?
ответ
Простой инжектор 2.4 содержит diagnostic API (SimpleInjector.Diagnostics.dll), который позволяет запросить контейнер для диагностических предупреждений. С помощью этого API вы можете писать интеграционные тесты, которые автоматически проверяют конфигурацию для диагностических сообщений:
// using SimpleInjector.Diagnostics;
[TestMethod]
public void Container_Always_ContainsNoDiagnosticWarnings()
{
// Arrange
var container = Bootstrapper.GetInitializedContainer();
container.Verify();
// Assert
var results = Analyzer.Analyze(container);
Assert.IsFalse(results.Any(), Environment.NewLine +
string.Join(Environment.NewLine,
from result in results
select result.Description));
}
Конечно, вы также можете написать это в файл:
var results = Analyzer.Analyze(container);
File.WriteAllLines("c:\\diagnostic.txt", results.Select(r => r.Description));
Спасибо, это похоже на то, что мне нужно. Кстати, если вы заинтересованы в том, чтобы это разоблачало, не прибегая к размышлениям, я мог бы нанести ему удар и отправить вам PR. –
Спасибо за предложение, но эта часть системы является внутренней по причине. Я не хочу публиковать вещи, если я не уверен, что API прав. Например, эта функция, вероятно, получит свою собственную сборку в будущем и немного изменится. Вот почему он не открыт прямо сейчас. Прошу прощения, если это неудобно для вас. – Steven
Нет проблем. Я могу это оценить. –
ContainerDebugView, который, как я полагаю, можно классифицировать как класс Facade для механизма диагностики в SimpleInjector, который используется только как DebuggerTypeProxy для класса Container.
Это внутренний класс с открытым конструктором, поэтому вы не можете его построить без использования отражения и класса Activator. Если вы это сделаете, вы должны иметь возможность вызвать конструктор с вашим контейнером, а затем использовать свойство Items для получения массива DebuggerViewItem, который содержит предупреждения и ошибки в вашей конфигурации.
Надеюсь, это поможет, поскольку я могу, конечно, понять, почему вы, возможно, захотите просмотреть ошибки без использования отладчика. (Например, в модульных тестах)
- 1. Как я могу написать результаты в файле
- 2. Где я могу написать файл журнала log4net под ClickOnce?
- 3. Общеизвестно, что написать класс диагностики в приложении
- 4. Php написать результаты в файл, но я не смог написать
- 5. Нет событий журнала диагностики в Windows Azure?
- 6. Я не могу написать файл
- 7. написать результаты в текстовый файл
- 8. написать отсортированные результаты в файл
- 9. Как написать файл журнала в tortoisehg
- 10. Как написать файл журнала C#?
- 11. Как я могу прочитать файл журнала сервера?
- 12. Могу ли я написать патч Matlab прямо в файл
- 13. Могу ли я написать вывод jasmine-spec-reporter в файл?
- 14. Python написать stdout в файл журнала
- 15. Могу ли я безопасно удалить файл журнала уведомлений администратора (.nfy)?
- 16. Регистрация журнала диагностики WCF с уникальным идентификатором
- 17. Могу ли я заставить генерировать файл журнала сбоев JVM?
- 18. Как написать файл журнала ошибок в PHP
- 19. Проверить путь, результаты журнала, выполнить файл
- 20. Могу ли я искать результаты хранимой процедуры?
- 21. Как написать выходные результаты в файл CSV
- 22. Почему я не могу написать двоичный файл?
- 23. Могу ли я написать файл на ПК клиента, используя silverlight
- 24. Могу ли я написать аннотации в Groovy?
- 25. Могу ли я написать screencapture в Python
- 26. Могу ли я написать html в .val()?
- 27. Обновление svn: могу ли я повторить результаты?
- 28. Как написать результаты этого скрипта в файл?
- 29. Как я могу экспортировать вывод геолокации в файл журнала?
- 30. Как я могу написать предыдущую строку в файле журнала, используя модуль журнала Python?
Почему вы хотите сделать это? Запись в файл журнала кажется полезной, когда вам нужно проанализировать, что происходит в производственной среде, но разница между конфигурацией DI в вашем блоке разработчика и производственным сервером вряд ли будет разной, и поэтому результаты диагностики будут одинаковыми как на вашем компьютере, так и на сервере. – Steven
В настоящее время мы работаем над открытием диагностического API. Вероятно, это будет добавлено в следующем выпуске (v2.4). – Steven
Звучит хорошо :-) –