Содержание


Журналы в пакете crwdaq

Здесь содержится описание Журналов (log) пакета crwdaq.

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

Перейти к Содержанию


Системный журнал SysLog

Назначение SysLog

Системный журнал SysLog служит для сбора информации о работе всех подсистем пакета crwdaq.

Подробность ведения журнала зависит от уровня чувствительности TriggerLevel. События с уровнем значимости ниже этого уровня не записываются в журнал.

Перейти к Содержанию


Расположение SysLog

Системный журнал SysLog:

Перейти к Содержанию


Формат файла SysLog

Файл SysLog - текстовый, с разделителем строк EOL.
Каждая (непустая) строка содержит описание события.

Общий формат строк/событий файла SysLog:

TIMESTAMP => SEVERITY SENDER - BODY

где TIMESTAMP - метка времени
    SEVERITY  - уровень значимости события
    SENDER    - описание источника события
    BODY      - тело сообщения в кодировке pct-encode

Маркеры ' => ', ' - ' играют роль и не должны искажаться.

Кодирование pct-encode применяется к строке сообщения только в случае необходимости, т.е. при наличии в сообщении “вредных” символов (управляющие символы, знак процента).

Перейти к Содержанию


Метка времени TimeStamp

Метка времени содержит календарное время наступления события.
Формат времени такой:

# Формат метки времени:
yyyy.mm.dd-HH:MM:SS.ZZZ
 
# yyyy - год          формат %4.4d
# mm   - месяц        формат %2.2d
# dd   - день         формат %2.2d
# HH   - часы         формат %2.2d
# MM   - минуты       формат %2.2d
# SS   - секунды      формат %2.2d
# ZZZ  - миллисекунды формат %3.3d
 
# Пример метки времени:
2025.08.21-16:17:38.992

Перейти к Содержанию


Уровни значимости Severity

Поле события Severity означает его уровень значимости.

Уровни значимости занимают диапазон 0..50 и делятся на группы,
в каждой группе (кроме последней - OFF) десять уровней,
начинающихся с базовых уровней каждой группы.

Базовые уровни групп упорядочены:

DEBUG < INFO < WARN < ERROR < FATAL < OFF

При этом система журналирования имеет уровень срабатываения TriggerLevel, а также флаг значимости - Notable:

Notable = (Severity >= TriggerLevel)

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

Уровень срабатывания TriggerLevel можно узнать/задать командой @syslog -t в окне Главная Консоль.
Задавать значение уровня срабатывания можно в виде числа или имени уровня.
Например:

# Задать TriggerLevel:
@syslog -t info/notify

# Сделать запись в журнал:
@syslog info/notify Demo - Test Message.

# Запись в файле SysLog:
2025.08.21-16:17:38.992 => INFO/NOTIFY: y510p/crwdaq_1/Demo - Test Message.

Группы Severity имеют такой смысл:

  1. DEBUG - отладочные сообщения, интересные только программистам,
  2. INFO - информационные сообщения о событиях в нормальной (штатной) ситуации,
  3. WARN - предупреждающие сообщения о выходе параметров из нормального диапазона,
  4. ERROR - сообщения об устранимых ошибках, подлежащих сравнительно простому исправлению,
  5. FATAL - сообщения об неустранимых ошибках, требующих серьезных усилий для исправления,
  6. OFF - система журналирования отключена (у этой группы нет подуровней).

Уровни значимости Severity можно получить командой @syslog -l.
Она выдает примерно такую таблицу:

0  DEBUG
1  DEBUG/REMARK
2  DEBUG/COMMENT
3  DEBUG/LEVEL3
4  DEBUG/LEVEL4
5  DEBUG/DETAILS
6  DEBUG/VIEWEXP
7  DEBUG/VIEWIMP
8  DEBUG/LEVEL8
9  DEBUG/LEVEL9
10 INFO
11 INFO/VOICE
12 INFO/TOOLTIP
13 INFO/INPUT
14 INFO/PRINT
15 INFO/NOTIFY
16 INFO/SUCCESS
17 INFO/LEVEL7
18 INFO/LEVEL8
19 INFO/LEVEL9
20 WARN
21 WARN/LEVEL1
22 WARN/LEVEL2
23 WARN/LEVEL3
24 WARN/HARDSHIP
25 WARN/PROBLEM
26 WARN/MISTIMES
27 WARN/EXCEPTION
28 WARN/WATCHDOG
29 WARN/LEVEL9
30 ERROR
31 ERROR/BUG
32 ERROR/GLITCH
33 ERROR/FAIL
34 ERROR/FAULT
35 ERROR/TROUBLE
36 ERROR/ALARM
37 ERROR/ALERT
38 ERROR/SIREN
39 ERROR/CRITICAL
40 FATAL
41 FATAL/FAILURE
42 FATAL/ABORT
43 FATAL/CRASH
44 FATAL/MISFORTUNE
45 FATAL/EMERGENCY
46 FATAL/ACCIDENT
47 FATAL/CALAMITY
48 FATAL/DISASTER
49 FATAL/DOOMSDAY
50 OFF

Перейти к Содержанию


Настройки Severity

Каждый тип событий в пакете crwdaq имеет свой уровень Severity.

Настройки уровней Severity - в файле crwdaq.sever.ini.

Перейти к Содержанию


Источник сообщения Sender

Источник сообщения имеет вид: HostName/Session/ObjectPath, где

Например:

# Пример сообщения от ядра пакета crwdaq:
crwbox/crwdaq_1/System -
# crwdox     - имя компьютера
# crwdaq_1   - имя сеанса программы
# System     - указание на системное сообщение

# Пример сообщения от прикладной программы DAQ:
crwbox/crwdaq_1/DAQ/!demo_testbench.cfg/&DEMOTESTBENCH -

# crwdox                              - имя компьютера
# crwdaq_1                            - имя сеанса программы
# DAQ/!demo_testbench/&DEMOTESTBENCH  - путь объекта:
#  DAQ                                - подсистема сбора данных
#  !demo_testbench                    - имя файла конфигурации
#  &DEMOTESTBENCH                     - имя программы DAQ

Перейти к Содержанию


Служба обслуживания журналов SysLog

Системный журнал SysLog и другие журналы пакета crwdaq находятся в папке $CRW_DAQ_VAR_TMP_DIR. Поскольку журналы копятся, а место на дисках ограничено, журналам требуется (само)обслуживание, которое заключается в (своевременной) чистке устаревших журналов. Это - задача службы обслуживания журналов SysLog. Процесс обслуживания журналов называется ротацией (rotate или roll), так как при этом происходит цикличекое переименование (ротация) файлов старых копий журналов. Ротация журналов выполняется в автоматическом режиме, но её надо (правильно) настроить.

Перейти к Содержанию


Ротация журналов SysLog

Ротация (обслуживание, сжатие) журналов вызывается:

Алгоритм ротации:

Поколения журналов:

Утилита unix logroll сохраняет старые копии журнала в виде “поколений” (generation) с номерами от 1 до 9.
При этом поколения старше первого сжимаются компрессором (gzip), а самое старое поколение nmaxkeep удаляется.
Допустим, имеется журнал sys.log, тогда:

При ротации журнал начинается “с нуля”, а старые копии журнала циклически сдвигаются на одно поколение, при этом самое старое поколение nmaxkeep удаляется, а первое поколение при сдвиге также сжимается.

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

Перейти к Содержанию


Утилита ротации журналов unix logroll

Утилита unix logroll, входящая в состав пакета crwkit, служит для выполнения обслуживания журнальных файлов, когда это потребуется, см. logroll.sh.

Эта утилита осуществляет ротацию (rotate или roll) журнальных файлов. Она работает аналогично штатной программе logrotate, которая обслуживает системные журналы Linux, но гораздо проще и разработана специально для журналов пакета crwdaq.

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

Пример:

# Вызов с явными параметрами
unix logroll -t demo.log 9 gz

# Ротирует журнал demo.log с 9 поколениями и сжатием gzip
# Сжатие применяется к 2-му и выше поколению копий журнала
# Опция -t (--touch) значит, что при ротации надо создать
# новый журнал нулевой длины

# Создает файлы:
# demo.log      - новый текущий журнал нулевой длины
# demo.log.1    - старая копия журнала 1-го поколения
# demo.log.2.gz - сжатая копия журнала 2-го поколения
# demo.log.3.gz - сжатая копия журнала 3-го поколения
# ...
# demo.log.9.gz - сжатая копия журнала 9-го поколения

# Вызов с параметрами по умолчанию 9 gz
unix logroll -t demo.log

Утилита ротации logroll применяется для (само)обслуживания sys.log и других журналов crwdaq в автоматическом режиме.

Перейти к Содержанию


CrwDaq Copyright © 2001-2025 Alexey Kuryakin