Почему разработчик стал лесорубом? Им нравилось работать с бревнами

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

Общие сведения

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

Понимание уровней

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

Пример

Для упрощения отладки вы можете очистить системный журнал перед запуском пользовательского приложения для исследования и получить меньше строк журналов. Чтобы очистить системные журналы, вы можете либо обрезать их, либо удалить. Помните, что при очистке системных журналов удаляется история журналов, поэтому перед очисткой журналов убедитесь, что эта информация не требуется для устранения неполадок, анализа или соответствия требованиям. Кроме того, для очистки журналов могут потребоваться права администратора, поэтому вам может потребоваться использовать команду sudo или выполнять команды от имени пользователя root.

После очистки системного журнала не забудьте перезапустить rsyslog. В противном случае ваше приложение не сможет регистрировать ваши сообщения на уровне пользователя. Ниже приведен пример в Ubuntu о том, как усечь, удалить и перезапустить службу.

sudo truncate -s 0 /var/log/syslog
sudo rm /var/log/syslog
sudo service rsyslog restart.

Это простой код C++, который генерирует сообщение журнала для средства user, которое указывает на информационное сообщение.

#include <syslog.h>

int main()
{
  // Open the syslog connection with arbitrary identifier and indicated facilities
  openlog("SyslogSampleApp", LOG_PID | LOG_CONS, LOG_USER);

  // Generate user-level log message
  syslog(LOG_INFO, "This is an INFORMATIONAL message for facility USER");

  // Close syslog connection
  closelog();
}

Этот пример включает заголовочный файл <syslog.h>, который предоставляет необходимые функции и константы для ведения журнала Syslog. Функция openlog() используется для открытия соединения со службой системного журнала с указанием пользовательского идентификатора ('SyslogSampleApp') для нашего приложения, параметров ведения журнала (LOG_PID для включения идентификатора процесса) и средства (LOG_USER для сообщений уровня пользователя).

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

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

Просмотр системного журнала зависит от используемого вами дистрибутива Linux. /var/log/syslogthe используется для Debian и Ubuntu, а /var/log/messagesused — для Red Hat и CentOS.

Заключение

Системные журналы — неотъемлемая часть систем Linux, служащая основой для эффективного мониторинга, устранения неполадок и анализа. Они имеют решающее значение для сбора и организации сообщений журнала на различных объектах и ​​уровнях. Эта категоризация дает ценную информацию о поведении системы, способствует эффективному решению проблем и способствует поддержанию работоспособности и безопасности системы. Очень важно использовать соответствующий уровень журнала, например LOG_INFO, чтобы гарантировать, что системный журнал не перегружен и сосредоточен на соответствующем сценарии, избегая ненужного включения записей LOG_ERR.