Много раз я видел запись таких ошибок:
System.out.println("Method aMethod with parameters a:"+a+" b: "+b);
print("Error in line 88");
так. Каковы наилучшие методы для регистрации ошибки?
EDIT:
Это java, но может быть C/С++, basic и т.д.
Много раз я видел запись таких ошибок:
System.out.println("Method aMethod with parameters a:"+a+" b: "+b);
print("Error in line 88");
так. Каковы наилучшие методы для регистрации ошибки?
EDIT:
Это java, но может быть C/С++, basic и т.д.
Журнал регистрации Apache не предназначен для общего ведения журналов приложений. Он предназначен для использования библиотеками или API-интерфейсами, которые не хотят принудительно внедрять реализацию протокола для пользователя API.
Существуют также проблемы с загрузкой классов с помощью Commons Logging.
Выберите один из [много] журналов api, наиболее широко используемым, вероятно, являющимся log4j или Java Logging API.
Если вам нужна независимость от реализации, вы можете рассмотреть SLF4J, автор оригинала log4j.
Выбрав реализацию, затем последовательно используйте уровни/степень регистрации в этой реализации, чтобы журналы поиска и фильтрации были проще.
Вход в консоль на самом деле ужасен и, откровенно говоря, знаком неопытного разработчика. Единственная причина такого рода: 1) он или она не знает о других подходах и/или 2) разработчик не подумал, что произойдет, когда его/ее код будет развернут на производственный сайт, и как приложение будет поддерживаться в этот момент. Работа с приложением, которое регистрирует 1 ГБ/сутки или более полностью ненужного журнала отладки, сходит с ума.
Общепринятой лучшей практикой является использование фреймворка регистрации, который имеет концепции:
Конечная структура журнала, которую вы будете использовать, будет зависеть, конечно, от вашей платформы. Некоторые общие опции:
Самый простой способ регистрировать ошибки в согласованном формате - использовать структуру ведения журнала, такую как Log4j (при условии, что вы используете Java). Полезно включить раздел регистрации в ваши стандарты кода, чтобы убедиться, что все разработчики знают, что нужно регистрировать. Самое приятное в большинстве фреймворков регистрации - это разные уровни ведения журнала, поэтому вы можете контролировать, насколько велик журнал, между разработкой, тестированием и производством.
Лучшей практикой является использование инфраструктуры java.util.logging
Затем вы можете записывать сообщения в любом из этих форматов
log.warning("..");
log.fine("..");
log.finer("..");
log.finest("..");
или
log.log(Level.WARNING, "blah blah blah", e);
Затем вы можете использовать logging.properties(пример ниже), чтобы переключаться между уровнями ведения журнала и делать всевозможные умные вещи, такие как запись в файлы, с вращением и т.д.
handlers = java.util.logging.ConsoleHandler
.level = WARNING
java.util.logging.ConsoleHandler.level = ALL
com.example.blah = FINE
com.example.testcomponents = FINEST
На мой взгляд, следует избегать таких рамок, как log4j и других, у Java есть все, что вам нужно.
ИЗМЕНИТЬ
Это может применяться как общая практика для любого языка программирования. Возможность управлять всеми уровнями ведения журнала из одного файла свойств часто очень важна в корпоративных приложениях.
Некоторые предлагаемые лучшие практики
Используйте фреймворк регистрации. Это позволит вам:
Если вы используете java, то slf4j теперь предпочитают Jakarta commons logging в качестве фасада лесозаготовки.
Как указано, slf4j - это фасад, и вы должны затем выбрать базовую реализацию. Либо log4j, java.util.logging, либо "simple".
Следуйте советам по обеспечению безопасности, чтобы дорогие протоколирующие операции не выполнялись без необходимости
На самом деле нет лучшей практики для регистрации ошибки. В основном это просто необходимо следовать последовательной схеме (в рамках программного обеспечения/компании/и т.д.), Которая обеспечивает достаточную информацию для отслеживания проблемы. Например, вы можете отслеживать время, метод, параметры, метод вызова и т.д.
Пока вы просто не печатаете "Ошибка в"
Общий API регистрации Apache, как упоминалось выше, является отличным ресурсом. Возвращаясь к java, есть также стандартный поток вывода ошибок (System.err).
Непосредственно из Java API:
Этот поток уже открыт и готов для приема выходных данных.
Обычно этот поток соответствует вывода дисплея или другого выхода назначение, указанное хостом окружающей среды или пользователя. Условно, этот выходной поток используется для отображения сообщения об ошибках или другую информацию это должно прийти к немедленному внимание пользователя, даже если основной выходной поток, значение переменная out, была перенаправлена в файл или другое место назначения, которое обычно не контролируются постоянно.
Помимо технических соображений из других ответов рекомендуется вести журнал значимого сообщения и, возможно, некоторые шаги, чтобы избежать ошибки в будущем. В зависимости от ошибок, конечно.
Вы можете получить больше от ошибки ввода-вывода, когда в сообщении указано что-то вроде "Не удалось прочитать из файла X, у вас нет соответствующего разрешения".
Смотрите примеры SO или искать в Интернете.