WEB-приложение Сведение отчетности  (23.11.2023)
Протоколирование отладочных сообщений

Поддерживается 2 вида протоколирования:

  • в локальный системный журнал (journalctl)
  • отправка на syslog сервер (как локальный, так и внешний)

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

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

  • -DebugMessageToJournal - протоколирование в локальный системный журнал
  • -DebugMessageToSyslog host[:port] [-udp | -tcp | -ssl] - протоколирование на syslog сервер.

Для отбора из системного журнала отладочных сообщений, которые бы попали в Отладочный монитор в случае работы сервиса на Windows, можно использовать фильтрацию по аттрибуту SYSLOG_SDID=DebugMessage (без данной фильтрации будут отобраны сообщения от любых приложений/служб с данного хоста), а также указать другие критерии отбора.

Пример
  • Пример отбора сообщений с подробным выводом в удобочитаемом виде:
    journalctl -o verbose SYSLOG_SDID=DebugMessage --since="2017-09-13 15:00:00"
    
  • Пример отбора сообщений для дальнейшей загрузки полученного файла в Отладочный монитор, или отправки в службу поддержки:
    journalctl -o export SYSLOG_SDID=DebugMessage --since="2017-09-13 15:00:00"
    

Настройка Отладочного монитора, запущенного на Windows, в качестве syslog сервера, описана с статье Использование отладочного монитора.

Также стоит отметить, что по умолчанию в ОС все сообщения отправленные в системный журнал, автоматически попадают и на локальный syslog сервер (служба rsyslog). В свою очередь, rsyslog может быть настроен на пересылку локальных сообщений на некий внешний syslog сервер.

Это дает дополнительную возможность пересылать отладочные сообщения с Linux в Отладочный монитор, который запущен на Windows. Для этого можно добавить конфиг-файл (с любым именем, но расширением.conf) в каталог конфигов rsyslog ("/etc/rsyslog.d/") со следующим содержанием:

01template(name="SyslogProtocol23FormatFromCEE" type="list") {
02  constant(value="<")
03  property(name="pri")
04  constant(value=">1 ")
05  property(name="timestamp" dateFormat="rfc3339")
06  constant(value=" ")
07  property(name="hostname")
08  constant(value=" ")
09  property(name="programname")
10  constant(value=" ")
11  property(name="$!_PID")
12  constant(value=" ")
13  property(name="$!SYSLOG_MESSAGE_ID")
14  constant(value=" [")
15  property(name="$!SYSLOG_SDID")
16  constant(value="@77737676")
17  constant(value=" ModuleName=\"")
18  property(name="$!MODULENAME")
19  constant(value="\" TID=\"")
20  property(name="$!TID")
21  constant(value="\" Sender=\"")
22  property(name="$!SENDER")
23  constant(value="\"] ")
24  property(name="$bom")
25  property(name="$!MESSAGE")
26  constant(value="\n")
27}
28
29if $inputname == "imjournal" then {
30  if $!SYSLOG_SDID == "DebugMessage" then {
31    action(type="omfwd" Target="192.168.1.50" protocol="tcp" Port="514" TCP_Framing="octet-counted" Template="SyslogProtocol23FormatFromCEE")
32  }
33}


См. также