#c# #logging #console #cmd
#c# #ведение журнала #консоль #cmd
Вопрос:
Часто, когда я разрабатываю программу, я бросаю какую-то консоль.инструкции writeline, позволяющие мне знать, что делает приложение во время отладки. Часто я обнаруживаю, что удаляю их и добавляю обратно, чтобы сохранить код в чистоте. Я не нашел, казалось бы, эффективного способа изящно разместить их в коде.
Мне было интересно, что делают другие люди или что считается лучшей практикой для этого. Я не уверен, могу ли я использовать трассировку или нет, потому что я не отлаживаю на компьютере с установленной Visual Studio (сервер, на который я публикую, не имеет его).
Существует ли какой-либо метод на основе AOP для атаки на это? В идеале я бы не хотел, чтобы вывод в производственном коде, потому что запись на консоль, похоже, замедляет работу приложения.
Заранее спасибо!
Ответ №1:
Вы рассматривали возможность использования Log4Net? Это должно быть намного более гибким для вас. Вы можете оставить много записей в коде и включать или выключать их в зависимости от конфигурации, загруженной во время выполнения.
Комментарии:
1. Ваша репутация заставляет меня задуматься, правильно ли код SO обрабатывает 1m rep, потому что в конце концов вы туда доберетесь 🙂
2. Я рассматривал это в прошлом, но попробую еще раз! Спасибо!
3. По состоянию на 25/01/2021 JS имеет 1235 тыс. повторений, так что да, так что обрабатывает 1 МЛН повторений нормально, держу пари, что это длинный int, так что осталось всего несколько миллиардов
Ответ №2:
Существует множество вариантов выхода из системы. MS enterprise library и log4net — два очень популярных варианта. В каждом из них вы можете контролировать уровень ведения журнала через файл конфигурации, чтобы в dev вы могли вести очень подробное ведение журнала, но в prod вы можете подавить все, кроме ошибок, например, — все без изменения кода.
Кроме того, если вам нужно отладить производственную проблему, вы можете включить подробное ведение журнала в рабочей среде, просто изменив настройки конфигурации.
Ответ №3:
Блок приложения для ведения журнала корпоративной библиотеки Microsoft может быть выбором.
Ответ №4:
Вы пробовали писать только в режиме отладки? Я считаю, что правильный способ сделать это так:
#if DEBUG
Console.WriteLine("Debug stuff here");
#endif
Комментарии:
1. Часто требуется включить отладку в реальном приложении, чтобы найти ошибку, вы не хотите повторно развертывать приложение в режиме отладки.