Debug card expert коды ошибок

POST-карта или POST-тестер это PCI плата расширения, имеющая цифровой индикатор, который выводит коды инициализации мат. платы. По данному коду можно найти, в каком из компонентов платы имеется неисправность. Коды часто зависят от производителя BIOS. Если ошибки отсутствуют и тест проходит успешно, то POST выдаёт код не меняющийся значение, к примеру на большинстве мат. плат по
завершении инициализации выводится код «FF». Также часто на тестерах установлены светодиоды отображающие напряжения +5 +3,3 +12, −12.

Вашему вниманию коды ошибок, подходящие на самые версии BIOS:

Недавно мне захотелось обзавестись продвинутой и универсальной POST картой, но с учетом ограниченного бюджета. Посидев немного в известных всем интернет магазинах, я наткнулся на китайскую Sintech ST8679 (Debug King). Обзоров или адекватных отзывов в сети по ней не было, а на фото и по описанию она очень походила на ту самую, что я искал. И вот она у меня на руках. Что вышло на самом деле, читайте в обзоре.

Делает POST карту ST8679 китайская компания Sintech Electronic (официальный сайт sintech. cn), уже 10 лет занимающаяся производством компьютерных причиндалов: средства диагностики (читай POST карты) и переходники между различными интерфейсами (могу сказать, есть у них кой чего интересного).

Продукция этой компании (под их и другими брендами) продается по всем интернет магазинам подобных товаров, но есть и два «родных»: www. pc-adapter. net и eshop. sintech. cn. Ни разу в них не покупал, привожу просто для информации и в качестве каталога их продукции, если кому-то интересно.

Но давайте ближе к карте. Ее название «Sintech ST8679«, кроме того, она часто упоминается как «Debug King 3 in 1» (дословно – король отладки). Довольно «громко», но не просто так – это топовая модель из всех POST карт Sintech. Полное официальное описание доступно на странице карты.

Основные особенности из описания POST карты Sintech ST8679:

  • 4 интерфейса: PCI, mini PCI, mini PCI-E, LPC
  • 4 BIOS: Phoenix, Award, AMI, Insyde (зависит от редакции карты и влияет только на отображения текстовых или графических подсказок)
  • Интеллектуальный анализ ошибок и вывод результата на ЖК экран
  • Сегментный индикатор и индикаторы сигналов шины

На самом деле, одна из главных особенностей этой карты в ее модульной структуре: к модулю с графическим дисплеем подключается шлейфом диагностическая плата. Возможно, это менее надежно цельной конструкции, но в удобстве и гибкости не откажешь.

Цена устройства 15-25$ с доставкой (в зависимости от комплекта и жадности продавца).

Комплектация

Об упаковке особо сказать нечего – карточка пришла запаянной в обычный антистатический пакет.

Внутри лежало следующее:

Доставка мою карту не пощадила: погнутые штырьковые контакты на мелкой плате, помятая инструкция со шлейфом, покоцанный корпус дисплея. Спасибо, что дошло…

Инструкция – лист толстой глянцевой бумаги

A3 формата сложенный в несколько раз. Сугубо на ломаном английском, русского нет. В случае утери можно скачать с сайта Sintech (ссылка в начале статьи). Но с имеющейся у меня бумажной версией она немного не совпадает.

Дополнительно комплект может иметь еще 2 шнура:

  1. USB кабель AM-BM (как для принтера). Нужен для почти бесполезного offline режима (об этом чуть далее).
  2. LPC кабель. Служит для подключения mini PCI платы к LPC интерфейсу. Представляет собой 9 разноцветных проводов длиной примерно в 20 см, обжатых в розетку BLS2-9 (шаг контактов 2мм, чуть более редкая, чем обычные BLS). Обратный конец – просто залуженные провода, которые предполагается припаивать по месту.

При необходимости, чтобы не переплачивать оба, этих кабеля можно найти в тумбочке или купить задешево. Я брал комплект без них.

Модуль дисплея

Основным, в своем роде материнским модулем, является модуль дисплея. Он служит для вывода информации о POST кодах подключенной к нему карты. Внешне – пластиковая коробочка размером 22х101х55 мм (ВхШхГ), самый крупный модуль из всего комплекта. Качество пластика – так себе, обычный шероховатый черный китайский пластик.

На лицевой панели находится экран (размером 33х25 мм), 2 кнопки управления и 2 светодиода. На экран наклеена защитная пленка (в углу можно видеть часть лепестка для ее снятия), но снять ее получится только раскрутив корпус модуля.

В этой редакции модуль «перевернули», в инструкциях и старых фото кнопки располагались справа от экрана. Модуль имеет 2 гнезда: слева – 10-контактный IDC для подключения к POST картам, справа – USB.

USB необходим для Offline режима: можно просматривать информацию об имеющихся в базе устройства POST кодах. Своего рода справочник, не более. Операций с компьютером (вроде прошивки, команд и т. д.) не предусмотрено, по крайней мере, такая возможность не документирована.

Действия кнопок:

  1. Вверх-вниз – перелистывание информации о кодах ошибок.
  2. Переключение языка / просмотр редакции прошивки – зажать верхнюю кнопку и, не отпуская ее, нажать нижнюю.
  3. Переключение BIOS – зажав нижнюю кнопку нажимать верхнюю до тех пор, пока не отобразится нужная BIOS.

Подсказки на экране могут выводиться на двух языках: английский и китайский.

В левом нижем углу экрана отображается текущий тип BIOS, для которого выводятся подсказки. Для выбора доступны следующие: Award, AMI, Phoenix, InsydeH2O, AMI EFI (современная версия AMI), Авто режим.

В авто режиме девайс отображает графическую подсказку наиболее вероятной причины ошибки. Строится это на том, что некоторые POST коды разных BIOS совпадают, некоторые наоборот не пересекаются. Для базовой диагностики это неплохо, но с более серьезными проблемами нужен точный код и описание для конкретной BIOS.

На фото возможные варианты подсказок. Внимательный читатель заметит буквы в правом верхнем углу экрана для ошибок памяти. Это отсылка к BIOS, согласно которой предполагается эта ошибка: I – Insyde, P – Phoenix, M – AMI, W – Award, E – AMI EFI.

Экран имеет подсветку, что немаловажно в условиях слабой освещенности. На фоне видно картину на тему «Девушка на пляже», которая не просто отвлекает мыслями о лете, но еще и мешает читать написанное на экране.

Редакция прошивки экранного модуля моей карты (отображается при переключении языка):

Модуль PCI

PCI модуль предназначен для диагностики материнских плат ATX формата, имеющих PCI слот. Может использоваться как сам по себе, так и подключаться к дисплейному модулю. Длина 74 мм, что немного короче PCI слота, но для POST карт это стандартная практика.

Возможности PCI модуля:

  • Считывание и передача POST кода на модуль дисплея
  • Сегментный индикатор для отображения POST кода
  • Светодиодные индикаторы для сигналов шины (Clock, Reset, IRDY, FRAME, DATA, C/BE)
  • Контакты для измерения основных напряжений (+3.3, +12, +5, -12 и GND), что значительно удобней и безопасней, чем замерять напрямую с материнки.

Модуль Mini PCI

Модуль совмещает в себе 3 интерфейса: mini PCI, mini PCI-E, LPC. И предназначен, в первую очередь, для диагностики ноутбуков.

Имейте в виду, что mini PCI значительно короче стандартного (48 мм, вместо 60), как и у других подобных POST карт. Mini PCI-E в пределах спецификации.

Для подключения к LPC служат ряд штырьковых контактов стандарта PLS2 (шаг 2 мм).

Подключается штекером (придется «сочинить» самому, если разъем есть на материнке) или подпаивая соответствующие провода напрямую к контролеру.

Начинка

Приведу фото плат в хорошем разрешении (картинки кликабельны). Старался, чтобы читалась маркировка на всех компонентах (все крупные электролиты – 100μF 16v).

Под наклейкой (на обоих платах) скрывается достаточно древний и известный CPLD чип XC9572XL от Xilinx (даташит на него).

Экранный модуль собран на 4 шурупа PH0.

Фото задней стороны платы:

Для хранения текста и картинок использована 16 мегабитная микросхема Flash памяти с SPI интерфейсом Winbond 25Q16DVSIG. Работает все на 8-битрном микроконтроллере STM 8S003F3P6. Могу сказать, что, судя по фото в сети, в других редакциях использовались другие компоненты.

Индикаторные светодиоды промаркированы Online Offline, а не Offline Online, как написано в инструкции.

ЖК экран VGG090618-6FWNNC от Evervision Electronics разрешением 96×64 точек. Шлейф экрана не съемный, припаян к плате. Подсветка за счет двух SMD светодиодов.

В общем, монтаж не идеальный, флюс отмывать не стали, но для данного ценового сегмента это обычная практика.

Тестирование Sintech ST8679 в работе

Для начала нужно собрать базовый конфиг: материнка, процессор, охлаждение, (память), (видеокарта), не забыв и про блок питания.

Затем нужно подключить к модулю дисплея комплектным шлейфом нужную плату. У гнезд и штекеров есть ключи, не ошибетесь.

Ну, собственно, все – вставляем карту, включаем материнку и смотрим коды.

Во время прохождения POST, когда на экране «бегут» коды – показания сегментного индикатора и дисплея совпадают.

Когда же POST завершается и остается показание последнего кода, происходит следующее: на дисплее показания не меняются, а на карте «пропадает» один из сегментников, то левый, то правый… Какой-либо зависимости я не нашел. Происходит это стабильно на разных конфигах, независимо от наличия экранного модуля. В общем – глюк, причем из-за него пользоваться PCI платой в одиночку становится проблематичным.

На фото видно еще одну проблему. Карточка, похоже, не является полноценным PCI устройством, и после инициализации генератора (для Award это как раз 26h), BIOS может снять тактирующую частоту с ее слота (проще говоря – «выключить» слот за ненадобностью) и все следующие POST коды просто перестают выводиться. Если я не ошибаюсь, такое поведение свойственно только Award BIOS.

С mini PCI платой все примерно так же. Могу лишь дать парочку советов: 1) она меньше стандартного mini PCI, поэтому плата не будет фиксироваться обеими защелками и может даже выскакивать, поэтому вам нужно обеспечить надежный контакт; 2) в случае, если придется снимать корпус для установки карты – постарайтесь при ее подключении ничего ей не замкнуть, можно подложить кусок бумаги на худой конец.

Во всем остальном работа Sintech ST8679 не отличается от любых других POST карт этого уровня.

Выводы

Однозначно можно сказать, что POST карта Sintech ST8679 ожиданий не оправдала. Главные плюсы: поддержка 4 интерфейсов и внешний дисплей. Во всем остальном это обычная карточка, но с графическим ЖК экраном, который выводит POST код и его описание на английском (что и так можно посмотреть в справочниках и даже на русском). К тому же хватает глюков, но обновление прошивки не предусмотрено.

Вся информация дана в обзоре, решение за вами. Но лично я не берусь рекомендовать эту карту ни любителям, ни тем более профессионалам.

Коды ошибок Dr. Web

Dr. Web считается российским разработчиком антивирусных программ, сервисов для предоставления информационных услуг корпоративным, частным пользователям. Кроме того, “Доктор Веб” – популярная антивирусная программа, установка которой нередко сопряжена с неполадками. Ниже представлены популярные коды ошибок Dr. Web и их расшифровка.

Ошибка 2

Ошибка dr web 2 свидетельствует о сбое в процессе обновления. Она вызывается несколькими причинами. Чтобы ее исправить, необходимо проверить доступность сети, правильность настроек прокси при их использовании. Если сеть доступна, прокси настроен правильно, необходимо выполнить ряд действий, направленных на восстановление системы с антивирусом. Возможно, проблема исчезнет.

Коды ошибок Dr. Web

Устранить проблему можно тремя путями:

  1. Произвести проверку жесткого диска, используя утилиту chkdsk. Чтобы проверить диск, необходимо ввести команду chkdsk C: /F /R в поисковике Виндовс, зажав клавиши Виндовс+R. Утилита предложит проверить диск после перезагрузки. С действием нужно согласиться. При загрузке появится сообщение о проверке диска, которую можно отменить, нажав любую клавишу. После проверки диска, следует перегрузить систему и протестировать его.
  2. Выполнить восстановление антивирусника. Для этого нужно открыть Пуск, перейти в Панель Управления, Программы и компоненты. Далее нажать Изменить и Восстановить программу. После восстановления системы перегрузить ОС и проверить, как работает антивирусник.
  3. При сохранении неполадки в обновлении, следует нажать на антивирусный значок справа внизу, потом зайти в Центр безопасности. Там найти значок замок, потом шестеренку. В разделе Общие нажать на Дополнительные настройки, Журнал, Изменить. У флажка с обновлением антивирусника кликнуть на флажок и сохранить настройки. Далее нужно повторить попытку обновления. После появления кода 2 сформировать отчет, выбрав Поддержку, Создать отчет. Далее обратиться в службу поддержки.

Коды ошибок Dr. Web

Ошибка 9

Проблема состоит в невозможности подключения к серверам обновления. Ошибку можно решить двумя способами. В первом случае в антивирусных настройках не написаны параметры серверного прокси или имеются проблемы, связанные с интернет подключением. При применении прокси необходимо:

  1. Щелкнуть по значку программы справа внизу правой кнопкой мыши;
  2. Перейти в режим администратора, щелкнуть по замку, далее – по шестеренке;
  3. Выбрать раздел Сеть, далее кликнуть на параметр использования прокси-сервера, корректно настроить соединение сети.

Важно! Если прокси не применяется, следует проверить сетевое соединение и при необходимости настроить его.

Во втором случае код появляется, когда на серверах обновлений нет, однако части серверов обновления нет. Поскольку код 9 говорит об отсутствии свежих обновлений, то никаких действий предпринимать не стоит. Антивирус в назначенный час будет автоматически обновлен.

Ошибка 10

Суть проблемы состоит в репозиторие, сбое в скриптах, отсутствии некоторых из них. Решать проблему необходимо, переустановив антивирус. Для решения вопроса, следует скачать с официального сайта антивирусную программу. Удалить предыдущую версию программы, сделать перезагрузку компьютера, далее запустить антивирус и при установке указать путь к файлу. Сделать повторную перезагрузку компьютера.

Коды ошибок Dr. Web

Ошибка 11

Проблема заключается в невозможности обновления антивирусных компонентов. Код 11 высвечивается по ряду причин. Нередко его появление связано с использованием устаревшей антивирусной версии или с повреждением файлов. Если используется устаревшая версия антивируса, необходимо удалить старую и закачать новую программу.

Если файлы повреждены вследствие проблем с диском, следует исправить все ошибки диска, восстановить антивирусную систему. Восстановление можно провести через следующую пошаговую инструкцию: Пуск, Панель управления, Программы и компоненты, Dr. Web, Изменить, Восстановить. После восстановления, потребуется перезагрузить персональный компьютер, проверить, как работают обновления.

Коды ошибок Dr. Web

Ошибка 12

Суть вопроса в блокировке лицензии. Зачастую она возникает при отсутствии ее активации, активации старой, лицензированной версией, использовании лицензии на другом персональном компьютере. Если не активирована лицензия, необходимо активировать ее через менеджер лицензий. Достаточно удалить заблокированную лицензию и оставить одну действующую.

Если проблема заключается в автоматически блокируемой лицензии, необходимо указать новую при антивирусной регистрации через Менеджер лицензий. Если используемое разрешение было использовано раньше на другом персональном компьютере, необходимо обратиться в техническую поддержку, приложив документы, подтверждающие владение лицензией.

Ошибка 16

По этой ошибке установить и работать с антивирусом невозможно из-за действия сторонних программ. Есть несколько основных причин, почему возникает неполадка. В системе могут находиться другие антивирусы или частично установленные файлы. Также в системе могут находиться вредоносные ПО, блокирующие установку антивирусной программы. Необходимо использовать бесплатную утилиту, чтобы очистить персональный компьютер от вирусов, после чего повторить установку.

Коды ошибок Dr. Web

Ошибка 32

32 ошибка Доктор Веб заключается в неполадке установке или восстановлении антивирусной программы. Она появляется, если есть критические повреждения в момент невозможности установки, восстановления продукта по каким-то причинам. Следует загрузить, установить утилиту, после чего перезагрузить персональный компьютер, повторно установить программу.

Ошибка 33

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

Коды ошибок Dr. Web

Ошибка 110

110 неполадка связана с неполадкой установки серверных продуктов. Она вызывается разными причинами, поэтому необходимо обратиться в техническую поддержку, приложить отчет, который создан с помощью утилита.

Ошибка 902

Суть неполадки состоит в неправильной установке, удалении. Она возникает, если повреждаются антивирусные файлы, не полностью или некорректно был удален старый антивирус.

В такой ситуации необходимо сделать очистку системы от антивирусных остатков, а после завершения процедуры стоит повторно запустить установку. Если проблема сохраняется, следует направиться в техническую поддержку.

Ошибка 914

Коды ошибок Доктор Веб 914 и 910 говорят о том, что произошел сбой компонентов продукта. В такой ситуации необходимо переустановить антивирус.

Если удаление с помощью стандартных средств оканчивается неудачей, следует скачать официальную утилиту и перезагрузить персональный компьютер. Если код продолжает высвечиваться, программисты советуют написать в службу поддержки.

Ошибка 1066

Неполадка связана с невозможностью установки антивируса, если есть несовместимое программное обеспечение с утилитой. Зачастую проблема возникает с агента Доктора Веб, если на ПК уже установлен другой антивирусник. Необходимо выполнить его удаление, а позднее – повтор попытки установки Доктора Веб.

Коды ошибок Dr. Web

Если появляются сложности или невозможно определить несовместимую программу, следует обратиться к специалистам службы технической поддержки.

Ошибка 1722

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

Ошибка 1726

Ошибка связана с некорректным запуском программы. Причинами служат основные четыре пункта. Неполадка связана с поврежденной загрузкой или неполной установкой программного обеспечения, повреждением реестра Доктор Веб из-за установки или удаления утилиты.

Может появляться из-за наличия в системы вируса, вредоносного программного обеспечения, повреждения файла Виндовс или удаления файлов утилиты другой программой.

Ошибка может быть связана с другими факторами, поэтому при совершении всех действий, направленных на решение возникшей проблемы, следует обратиться в техническую поддержку.

Что можно сделать? Специалисты рекомендуют в такой ситуации восстановить записи реестра, полностью просканировать компьютер на вирусы, очистить ПО от временных файлов, папок и другого мусора. Они советуют также обновить драйверы компьютера, использовать Восстановление Виндовс системы для отмены последних изменений в ПО, переустановить программу заново, запустить проверку системных Виндовс файлов, установить доступные Виндовс обновления и произвести чистую установку Виндовс.

15) Ошибка 12002

Суть заключается в неполадке с сетью, неправильной настройке сетевых соединений, неверно выбранных параметров серверного прокси, особенностью настройки сетевого подключения. Специалисты рекомендуют по этой проблеме проверить доступность интернет-сети, настройку брандмауэра, серверного прокси.

Если раньше не было выполнено этого действия, следует зарегистрировать лицензию, получить ключевой файл. Потом активировать полученный на майл ключевой файл, используя лицензионный менеджер. В случае отсутствия понимания, как убрать код 12002 с компьютера, программисты советуют составлять письмо в техническую поддержку. Желательно при этом прикреплять отчет с выполненными ранее действиями.

Коды ошибок Dr. Web

Ошибка 12007

Неполадка возникает из-за отсутствия доступа к сети, неправильной настройки сетевых соединений, неверных параметров серверного прокси, особенности настройки сетевого подключения на рабочем месте. При возникновении подобной ошибки необходимо проверить доступность интернет-сети, настроек брандмауэра, серверного прокси.

Коды ошибок Dr. Web

Важно! Если перечисленные выше действия были проделаны, а неполадка не исправлена, специалисты рекомендуют обратиться в службу технической поддержки. Для того чтобы сотрудники смогли оперативно помочь в ситуации, инженеры рекомендуют заранее делать подробный отчет о проделанных ранее действиях для устранения появляющегося кода при запуске утилиты.

Ошибка 12029

Ошибка связана с сетевыми неполадками, неправильной настройкой сетевых соединений, неверными параметрами серверного прокси. Нередко она сопряжена с тем, что пользователю не удается настроить сетевое подключение на рабочем столе. Также часто она связана с ошибкой в модуле обновления. Специалисты рекомендуют в таком случае действовать двумя путями:

  • Проверить доступность интернет – соединения, брандмауэрных настроек и серверного прокси;
  • Написать в службу технической поддержки для выяснения обстоятельств невозможности корректной работы антивирусника.

При сохранении ошибки, инженеры рекомендуют сделать переустановку антивируса. В таком случае следует скачать с сайта актуальный антивирусный дистрибутив. Потом удалить Доктор Веб предыдущей версии, используя “Панель управления”, “Установку и удаление программ”. Затем перезагрузить компьютер, скачать, запустить утилиту, перезагрузить компьютер, запустить антивирус и еще раз сделать перезагрузку операционной системы устройства.

Важно! Если после переустановки ошибка продолжит появляться, следует сделать отчет через DwSysInfo и отправить его специалистам службы техподдержки.

Коды ошибок Dr. Web

Ошибка 12152

Ошибка связи с сервером обозначается кодом 12152. При ее появлении специалисты рекомендуют проверить интернет – соединение, очистить компьютер от вредоносных ПО, почистить ПО от ненужных файлов, сделать переустановку антивирусника, перезагрузить компьютер или написать в службу технической поддержки, прикрепив отчет о проведенных действиях для устранения неполадки. Сотрудники Доктор Веб отвечают быстро и, в основном, помогают решить возникшую сложность быстро.

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

Давайте поговорим о ведении логов

Этот пост вдохновлен темой в форуме Go Forum, начатой Nate Finch. Этот пост сконцентрирован на языке Go, но если пройти мимо этого, я думаю, идеи представленные тут широко применимы.

Почему нет любви?

Пакет log в Go не имеет уровней для логов, вы можете сами вручную добавить приставки DEBUG, INFO, WARN, и ERROR. Также logger тип в Go не имеет возможности включить или выключить эти уровни отдельно для выбранных пакетов. Для сравнения давайте глянем на несколько его замен от сторонних разработчиков.

image

glog от Google имеет уровни:

  • Info
  • Warning
  • Error
  • Fatal (завершает программу)
  • Trace
  • Debug
  • Info
  • Warning
  • Error
  • Critical

Перед вами два примера, явно созданных под влиянием других библиотек для логирования на других языках.

Фактически их происхождение можно проследить до syslog(3), возможно, даже раньше. И я думаю, что они не правы.

Я хочу занять противоречивую позицию. Я думаю, что все библиотеки журналов плохи, потому что предлагают слишком много функций; ошеломляющий набор возможностей, который ошеломляет программиста прямо в тот момент, когда он должен ясно думать о том, как общаться с читателем из будущего, с тем, кто будет просматривать эти журналы.

Я утверждаю, что для успешных пакетов логов требуется гораздо меньше возможностей и, конечно, меньше уровней.

Давайте поговорим о предупреждениях (WARNING)

Давайте начнем с самого простого. Никому не нужен уровень журнала WARNING (предупреждение).

Никто не читает предупреждения, потому что по определению ничего плохого не произошло. Возможно, что-то может пойти не так в будущем, но это звучит как чья-то, a не моя проблема.

Кроме того, если вы используете какое-то многоуровневое логирование, зачем вам устанавливать уровень WARNING? Вы установили бы уровень INFO или ERROR. Установка уровня WARNING означает, что вы, вероятно, регистрируете ошибки на уровне WARNING.

Исключите уровень warning — это или информационное сообщение, или ошибка.

Давайте поговорим об уровне невосстановимой ошибки (fatal)

Уровень FATAL фактически заносит сообщение в лог, а затем вызывает os. Exit(1). В принципе это означает:

  • отложенные выражения в других подпрограммах(горутинах) не выполняются;
  • буферы не очищаются;
  • временные файлы и каталоги не удаляются.

Общепринято, что библиотеки не должны использовать panic1, но если вызов log. Fatal2 имеет тот же эффект, он также должен быть запрещен.

Предположения, что эта проблема очистки может быть решена путем регистрации обработчиков завершения работы в логгере, обеспечивает тесную связь между используемым логгером и каждым местом, где происходят операции очистки. Это также нарушает разделение интересов.

Не записывайте сообщения с уровнем FATAL, предпочтите вместо этого вернуть ошибку вызывающей стороне. Если ошибка доходит до main. main, то это правильное место для выполнения любых действий по очистке перед завершением программы.

Давайте поговорим об ошибке (уровень ERROR)

Обработка ошибок и ведение журнала (лога) тесно связаны, поэтому, на первый взгляд, регистрация на уровне ошибок (ERROR) должна быть легко оправданной. Я не согласен.

В Go, если вызов функции или метода возвращает значение ошибки, то реально у вас есть два варианта:

  • обработать ошибку.
  • вернуть ошибку своему вызвавшей стороне. Вы можете красиво завернуть ошибку в подарочную упаковку (wrap), но это не важно для этого обсуждения.

Позвольте мне убедить вас с помощью этого фрагмента кода:

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

Нужно четко понимать, я не говорю, что вы не должны записывать в лог, что произошла смена состояния:

Но в действительности log. Info и log. Error имеют одну и ту же цель.

Я не говорю «не регистрируйте ошибки»! Вместо этого я ставлю вопрос, что является наименьшим возможным API для ведения журнала (логирования)? И когда дело доходит до ошибок, я считаю, что подавляющая часть вещей, записанных на уровне ERROR, просто делается так, потому что они связаны с ошибкой. На самом деле они просто информационные, поэтому мы можем удалить логирование на уровне ошибок (ERROR) из нашего API.

Что осталось?

Мы исключили предупреждения (WARNING), аргументировали, что ничего не должно регистрироваться на уровне ошибок (ERROR), и показали, что только верхний уровень приложения должен иметь своего рода log. Fatal поведение. Что осталось?

Я считаю, что есть только две вещи, которые вы должны заносить в лог:

  • вещи, о которых заботятся разработчики, когда они разрабатывают или отлаживают программу;
  • вещи, которые волнуют пользователей при использовании вашей программы.

log. Info должен просто записать эту строку в вывод журнала. Не должно быть возможности отключить его, так как пользователю следует рассказывать только то, что ему полезно. Если возникает ошибка, которая не может быть обработана, она должна появиться в main. main там, где программа завершается. Незначительные неудобства, связанные с необходимостью вставки префикса FATAL перед окончательным сообщением журнала или записи непосредственно в os. Stderr с помощью fmt. Fprintf, не является достаточным основанием для расширения пакета матодом log. Fatal.

log. Debug, это совсем другое дело. Он нужен разработчику или инженера поддержки для контроля работы программы. Во время разработки выражения отладки (debug) должны быть многочисленными, не прибегая к уровню трассировки (trace) или debug2 (ты знаешь кто ты). Пакет ведения логов должен поддерживать детализированное управление для включения или отключения выражений отладки, для нужных пакетов пакете или, возможно, даже в более узкой области видимости.

Заключение

Если бы это был опрос в Твиттере, я бы попросил вас выбрать между

Как вы думаете? Это достаточно сумасбродно, чтобы работать, или просто сумасбродно?

Примечания

Некоторые библиотеки могут использовать panic/recover в качестве механизма внутреннего потока управления, но основная мантра заключается в том, что они не должны допускать утечки этих операций потока управления за границу пакета.

По иронии судьбы, хотя в нем отсутствует уровень вывода DEBUG, стандартный пакет логирования Go имеет функции Fatal и Panic. В этом пакете количество функций, которые приводят к внезапному завершению работы программы, превышает число тех, которые этого не делают.

Об авторе

Автор данной статьи, Дейв Чини, является автором многих популярных пакетов для Go, например github. com/pkg/errors и github. com/davecheney/httpstat. Авторитет и опыт автора вы можете оценить самостоятельно.

От переводчика

Насчет ведения логов обеспокоено достаточно много разработчиков, некоторые обсуждали внесение Logger интерфейса в стандартную библиотеку Go, чтобы упорядочить ведение логов в библиотеках и так стимулировать их разработчиков. Ребята даже оформили свое предложение и выставили документ на обсуждение.

Плюс презентация размышление Нужен ли нам новый логер и каким он должен быть? от Chris Hines.

Есть несколько реализаций идей Дейва go-log и немного отходящий в вопросе уровня ERROR и более тщательно продуманный пакет logr.

Источники:

https://web-shpargalka. ru/debug-card-expert-kody-oshibok. php

https://dr-web-cureit-free. ru/kody-oshibok-dr-web/

https://habr. com/ru/post/440200/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: