Можно сказать, что системный журнал — это механизм унифицированного управления системными журналами, особенно часто используемый для записи выходной информации процессов-демонов. Поскольку у демона нет управляющего терминала, его печать нельзя просто выполнить непосредственно на стандартный ввод или
stderr。
При использовании системного журнала обычно необходимо обращать внимание на две части: демон системного журнала и функцию системного журнала.
Демон системного журнала используется для унифицированного управления журналами. Обычно он создает сокет домена Unix типа дейтаграммы (SOCK_DGRAM) и привязывает его к /dev/log (различные
Системы могут различаться). Если сеть поддерживается, она также может создать сокет UDP и привязаться к порту 514. Демон системного журнала считывает информацию журнала из этих сокетов, а затем выводит ее в
Установите целевое местоположение (файл, последовательный порт и т. д.).
Упомянутые ниже logd ubox, syslogd busybox и syslog-ng — это разные реализации демона syslog.
Если приложение хочет отправить информацию о печати демону системного журнала, ему необходимо вывести информацию по пути, связанному с демоном системного журнала, через сокет домена Unix. Стандартный подход заключается в вызове функции системного журнала:
#include <syslog.h>
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
При первом вызове функции системного журнала приложением создается сокет домена Unix, который подключается к пути привязки сокета домена Unix демона системного журнала. Этот сокет останется открытым до тех пор, пока
пока процесс не будет завершен. Приложение также может явно вызывать openlog и closelog (ни одну из этих двух функций вызывать нельзя, если она не вызывается явно, функция syslog будет автоматически и неявно вызываться в первый раз).
При использовании openlog дескриптор файла, взаимодействующий с демоном системного журнала, будет автоматически закрыт после завершения процесса, что эквивалентно неявному вызову closelog.
Ниже приведены описания некоторых параметров. Более подробную информацию можно найти в руководстве по системному журналу.
• Параметр ident будет добавлен к каждому сообщению журнала, обычно это имя программы.
• Параметр option поддерживает следующие значения, и вы можете использовать операцию ИЛИ (OR) для поддержки нескольких опций:
option | иллюстрировать |
---|---|
LOG_CONS | Если журнал не может быть отправлен демону системного журнала через сокет домена Unix, выведите его на консоль. |
LOG_NDELAY | Немедленно откройте соединение с доменным сокетом Unix демона системного журнала, не дожидаясь первого вызова функции системного журнала для установления соединения (обычно соединение устанавливается при первом вызове системного журнала). |
LOG_NOWAIT | Не ждите подпроцессов, которые могли быть созданы во время регистрации сообщений (подпроцессы не создаются в библиотеке GNU C, поэтому этот вариант не будет работать в Linux) |
LOG_ODELAYLOG_NDELAY | Напротив, соединение не устанавливается до первого вызова функции syslog (это поведение по умолчанию, вы не можете указать эту опцию явно) |
LOG_PERROR | Также выведите информацию журнала в stderr. |
LOG_PID | Добавить идентификатор процесса в каждое сообщение журнала |
• Параметр объекта используется для указания типа объекта текущего приложения и значения по умолчанию для объекта для последующих вызовов системного журнала.
Цель этого параметра — позволить демону системного журнала различать информацию журнала различных типов объектов через файлы конфигурации. Если приложение не вызывает openlog или параметр объекта при вызове равен 0,
Вы можете передать объект как часть параметра приоритета при вызове системного журнала.
facility | иллюстрировать |
---|---|
LOG_AUTH | Информация о безопасности/авторизации |
LOG_AUTHPRIV | Информация о безопасности/авторизации(частное пользование) |
LOG_CRON | Демоны, связанные со временем (cron и at) |
LOG_DAEMON | Системный демон |
LOG_FTP FTP | демон |
LOG_KERN | Информация ядра (не может быть сгенерирована процессами пользовательского пространства) |
LOG_LPT | система линейного принтера |
LOG_MAIL | Почтовая система |
LOG_NEWS | Сетевая система новостей USENET |
LOG_SYSLOG | Есть системный журнал демон внутренне генерирует сообщения |
LOG_USER | Любое сообщение уровня пользователя (по умолчанию) |
LOG_UUCP | система UUCP |
Параметр приоритета может представлять собой комбинацию объекта, упомянутого выше, и уровня ниже. Приоритет уровня сортируется от высокого к низкому следующим образом:
level | ценить | иллюстрировать |
---|---|---|
LOG_EMERG | 0 | Срочно (система недоступна) (высший приоритет) |
LOG_ALERT | 1 | Действия должны быть приняты немедленно |
LOG_CRIT | 2 | Серьезные ситуации (например, ошибки аппаратного устройства) |
LOG_ERR | 3 | Состояние ошибки |
LOG_WARNING | 4 | Предупреждающая ситуация |
LOG_NOTICE | 5 | Обычная, но важная ситуация (ценить по умолчанию) |
LOG_INFO | 6 | Информация для уведомления |
LOG_DEBUG | 7 | Информация об отладке (самый низкий приоритет) |
Часто системный журнал будет демон читает и записывает информацию журнала в определенный файл середина.,С журналомизувеличивать,Размер файла будет продолжать расти. Чтобы файлы журналов не заполняли место для хранения,Требуются ограниченные дни
Размер файла журнала и удаление прошлых журналов называется ротацией.
rotate Реализация обычно следующая: предполагается, что системный журнал демон записывает лог в файл /var/run/messages, когда сообщения. Когда размер файла превышает установленную цену, сообщения будут Информация для входа сохраняется в
в другом файле (при условии, что имя — messages.0), а затем очистите сообщения контент; когда будут следующие сообщения; Когда размер файла превысит установленную цену, сообщения будут снова удалены. Содержимое сохраняется как
messages.0, исходное содержимое messages.0 сохраняется как messages.1. По аналогии, через несколько раз будут сообщения, messages.0, messages.1,..., messages.n
документ. Обычно n устанавливается измаксимумценить,Исторические файлы, превышающие эту цену, будут удалены.,Тем самым ограничивая общий размер файла журнала.
Мы можем написать наши собственные сценарии для реализации вращения, мы можем использовать специальный инструмент logrotate, а также есть несколько системных журналов. демониз реализует собственную ротацию функции, такие как ubox чтение журнала 、busybox из
syslogd 。
ubox isOpenWrt из панели инструментов, это системный журнал Система управляется logd с чтением журнала Два инструмента реализуют (здесьчтение журналадаubox Реализуйте это самостоятельно, используя busybox ниже. поставлятьчтение журнала не то же самое
инструмент).
Потому что эти два инструментаisOpenWrt Поставляется изначально, их использование может зависеть от procd. и автобус , не тестировался на не-procd init изсреда Вниздадоступный。
При использовании procd init они запускаются автоматически через сценарий запуска /etc/init.d/log следующим образом:
#!/bin/sh /etc/rc.common
# Copyright (C) 2013 OpenWrt.org
# start after and stop before networking
START=12
STOP=89
PIDCOUNT=0
USE_PROCD=1
PROG=/sbin/logread
OOM_ADJ=-17
validate_log_section()
{
uci_validate_section system system "${1}" \
'log_file:string' \
'log_size:uinteger' \
'log_ip:ipaddr' \
'log_remote:bool:1' \
'log_port:port:514' \
'log_proto:or("tcp", "udp"):udp' \
'log_trailer_null:bool:0' \
'log_prefix:string'
}
validate_log_daemon()
{
uci_validate_section system system "${1}" \
'log_size:uinteger:0' \
'log_buffer_size:uinteger:0'
}
start_service_daemon()
{
local log_buffer_size log_size
validate_log_daemon "${1}"
[ $log_buffer_size -eq 0 -a $log_size -gt 0 ] && log_buffer_size=$log_size
[ $log_buffer_size -eq 0 ] && log_buffer_size=16
procd_open_instance
procd_set_param oom_adj $OOM_ADJ
procd_set_param command "/sbin/logd"
procd_append_param command -S "${log_buffer_size}"
procd_set_param respawn
procd_close_instance
}
start_service_file()
{
PIDCOUNT="$(( ${PIDCOUNT} + 1))"
local pid_file="/var/run/logread.${PIDCOUNT}.pid"
local log_file log_size
validate_log_section "${1}" || {
echo "validation failed"
return 1
}
[ -z "${log_file}" ] && return
procd_open_instance
procd_set_param command "$PROG" -f -F "$log_file" -p "$pid_file"
[ -n "${log_size}" ] && procd_append_param command -S "$log_size"
procd_close_instance
}
start_service_remote()
{
PIDCOUNT="$(( ${PIDCOUNT} + 1))"
local pid_file="/var/run/logread.${PIDCOUNT}.pid"
local log_ip log_port log_proto log_prefix log_remote log_trailer_null
validate_log_section "${1}" || {
echo "validation failed"
return 1
}
[ "${log_remote}" -ne 0 ] || return
[ -z "${log_ip}" ] && return
procd_open_instance
procd_set_param command "$PROG" -f -r "$log_ip" "${log_port}" -p "$pid_file"
case "${log_proto}" in
"udp") procd_append_param command -u;;
"tcp") [ "${log_trailer_null}" -eq 1 ] && procd_append_param command -0;;
esac
[ -z "${log_prefix}" ] || procd_append_param command -P "${log_prefix}"
procd_close_instance
}
service_triggers()
{
procd_add_reload_trigger "system"
procd_add_validation validate_log_section
}
start_service()
{
config_load system
config_foreach start_service_daemon system
config_foreach start_service_file system
config_foreach start_service_remote system
}
Видно, что скрипт передаст config_load system Прочтите конфигурацию, а затем запишите ее как logd. и чтение журнала из параметров опции. Конкретная конфигурация находится в файле /etc/config/system. середина.
Для получения более подробной информации обратитесь к OpenWrt. из Официальная документацияRuntime Logging in OpenWrt а такжеSystemconfiguration /etc/config/system 。
logd Поддерживает фиксированный размер кольца буфер (кольцевой буфер), используемый для сохранения собранных журналов (включая журналы ядра). кольцо buffer из размера через -S Параметры можно указать, настроив
Измените размер файла islog_buffer_size в «Установить/etc/config/систему», единица измерения – КБ.
logread Используется для чтения журнала изring buffer из содержимого и вывода в файл или сеть с удаленного компьютера (через TCP/UDP розетка). Он поддерживает следующие параметры:
Usage: logread [options]
Options:
-s <path> Path to ubus socket
-l <count> Got only the last 'count' messages
-e <pattern> Filter messages with a regexp
-r <server> <port> Stream message to a server
-F <file> Log file
-S <bytes> Log size
-p <file> PID file
-h <hostname> Add hostname to the message
-P <prefix> Prefix custom text to streamed messages
-f Follow log messages
-u Use UDP as the protocol
-0 Use \0 instead of \n as trailer when using TCP
• Выполнить чтение журнала напрямую изменит текущий звонок buffer Распечатайте все журналы (аналогично dmesg )。 • Добавьте -f будет продолжать работать и выходное кольцо buffer Китайско-Сингапур из журнала. • Используйте -F “
log_size” Размер файла можно указать, где log_file и log_size Все можно найти в /etc/config/system настройки в . (Фактическое тестирование показало, что он поставляется с функцией поворота из функции, когда log_file размер превышает log_size Когда будет добавлено ".0" Суффикс переносится в то же Оглавление, и по умолчанию сохраняется только один исторический файл. Пока не установлено, можно ли настроить сохранение более одного файла исторического дампа. )
busybox Поставляется с некоторым системным журналом Инструменты, обычно используемые в основном syslogd 、klogd и чтение журнала (здесьчтение журнал с указанным выше изубоксом чтение журнала не то же большинство инструментов), находятся в нем
menuconfig из“System LoggingUtilities” Вниз.
Более поздняя статья Связанное содержимое основано на версии 1.27.2. версия поясняется.
busybox изsyslogd Используется для чтения /dev/log в журнале и решить отправить его в файл, общую память или циклический buffer или Сеть и другие локации, и у него есть свой простой изротат Функция.
Он поддерживает функцию «из» и может быть настроен в меню конфигурации. После выбора всех функций он поддерживает опцию «из» следующим образом:
Usage: syslogd [OPTIONS]
System logging utility
-n Run in foreground
-R HOST[:PORT] Log to HOST:PORT (default PORT:514)
-L Log locally and via network (default is network only if -R)
-C[size_kb] Log to shared mem buffer (use logread to read it)
-K Log to kernel printk buffer (use dmesg to read it)
-O FILE Log to FILE (default: /var/log/messages, stdout if -)
-s SIZE Max size (KB) before rotation (default 200KB, 0=off)
-b N N rotated logs to keep (default 1, max 99, 0=purge)
-l N Log only messages more urgent than prio N (1-8)
-S Smaller output
-D Drop duplicates
-f FILE Use FILE as config (default:/etc/syslog.conf)
• Характеристика «Поворот» message файлы» (FEATURE_ROTATE_LOGFILE) и повернуть функция, соответствующая -s Укажите предельный размер файла журнала и -b Укажите, сколько файлов исторических дампов нужно сохранить. • Характеристика «Удаленный Log support» (FEATURE_REMOTE_LOG) — поддержка сетевых функций, соответствующая -R и -L. параметры. • Особенности «Поддержка -D (drop dups) опция» (FEATURE_SYSLOGD_DUP) соответствует -D параметра дубликаты журналов с одинаковым содержанием будут удалены. Чтобы определить, одинаковы ли логи, мы не только смотрим на основную информацию, но и принимаем во внимание дополнительную информацию, такую как временные метки, например «Январь». 1 08:00:00 root: foobar” и «Ян 1 08:00:01 root: foobar” Будут рассматриваться как два разных журнала и отбрасываться будут только идентичные журналы. • Особенности «Поддержка syslog.conf» (FEATURE_SYSLOGD_CFG) поддерживает использование файлов конфигурации, по умолчанию — /etc/syslog.conf. , также можно передать -f Укажите другие файлы. Его можно настроить в файле конфигурации в зависимости от объекта. с уровнем Вывод журналов в разные целевые местоположения. Примеры:
# Вывод всех логов в файл /var/log/messages.
*.* /var/log/messages
# Вывод всех логов в консоль
*.* /dev/console
# объект для LOG_KERN вывод журнала в /var/log/kernel
kern.* /var/log/kernel
# объект для LOG_USER и уровень Выше, чем LOG_NOTICE вывод журнала в /var/log/user
user.notice /var/log/user
• Функция «Читать buffer size in байтов» (FEATURE_SYSLOGD_READ_BUFFER_SIZE) используется для установки syslogd из/dev/log При чтении содержимого в буфере Размер, определяющий максимальную длину одного сообщения журнала. Лишняя длина будет обрезана и отброшена. • Особенности «Круговой Buffer поддержка» (FEATURE_IPC_SYSLOG) соответствует -C[size_kb] параметры, используемые для отправки логов в общую память из цикла buffer середина, Вы можете передать logread Прочтите это. круговой buffer из размеров, доступных через "Круглый buffer size in Kbytes (minimum 4KB)”(FEATURE_ IPC_SYSLOG_BUFFER_SIZE) для установки. • Возможности «Линукс kernel printk buffer поддержка» (FEATURE_KMSG_SYSLOG) соответствует -K Возможность вывода логов в Linux Ядро изпринтк buffer середина, доступно через dmesg Прочтите это. • Некоторые оставшиеся варианты: -O Используется для указания файла, в который следует напрямую выводить журнал -S; Используется для оптимизации сообщений журнала и удаления имени хоста, объекта и уровня. и другое содержимое, сохраняются только метка времени, имя процесса и содержимое сообщения.
**Уведомление:** Текущая версия issyslogd средний-f 、-C 、-O Соответствующие функции нескольких опций конфликтуют и не могут использоваться одновременно. Соответствующая часть кода выглядит следующим образом (находится в busybox/sysklogd/syslogd.c). изtimestamp_and_log функция):
/* Log message locally (to file or shared mem) */
#if ENABLE_FEATURE_SYSLOGD_CFG
{
bool match = 0;
logRule_t *rule;
uint8_t facility = LOG_FAC(pri);
uint8_t prio_bit = 1 << LOG_PRI(pri);
for (rule = G.log_rules; rule; rule = rule->next) {
if (rule->enabled_facility_priomap[facility] & prio_bit) {
log_locally(now, G.printbuf, rule->file);
match = 1;
}
}
if (match)
return;
}
#endif
if (LOG_PRI(pri) < G.logLevel) {
#if ENABLE_FEATURE_IPC_SYSLOG
if ((option_mask32 & OPT_circularlog) && G.shbuf) {
log_to_shmem(G.printbuf);
return;
}
#endif
log_locally(now, G.printbuf, &G.logFile);
}
Видно, что файл конфигурации включениз После особенностей(Соответствующий макросENABLE_FEATURE_SYSLOGD_CFG ), вернитесь сразу после чтения файла конфигурации и записи журнала в целевое расположение. , он больше не будет выполняться и будет выведен журнал.
в область общей памяти (соответствует макросу ENABLE_FEATURE_IPC_SYSLOG ) или напрямую в файл (последнее предложение из log_locally(now, G.printbuf, &G.logFile) )из кода.
Файл syslog.conf записывает поведение журнала программы syslogd. Программа запрашивает файл конфигурации при запуске.
Если файл конфигурации не изменен, по умолчанию он будет записан в /var/log/messages середина.
Файл состоит из отдельных записей для разных программ и категорий сообщений, каждая по одной строке. Для каждого типа сообщения предусмотрено поле выбора и поле действия. Эти поля разделены вкладками: выберите поля для указания типа сообщения и приоритета перемещения;
Область определяет syslogd Выполняется при получении издействия, соответствующего критериям выбора. Каждая опция состоит из устройства и приоритета. При указании приоритета syslogd запишет человека, у которого такое же или
Более высокий приоритет сообщений. Таким образом, если указано «крит», все сообщения, помеченные как «крит», «алерт» и «выход из», будут записаны. Поле действия каждой строки указывает, куда должно быть отправлено данное сообщение после того, как оно было выбрано в поле выбора.
Сын.
Как показано ниже:
тип.уровень; тип.уровень[TAB] действие
«Тип» в зарезервированном поле представляет источник генерации информации, который может быть:
auth Система аутентификации, т.е. запрос имени пользователя и пароля
cron система Система синхронизации отправляет сообщения при выполнении запланированной задачи
daemon Некоторые демоны системы изsyslog, например излог, созданный in.ftpd.
kern Информация из системного журнала ядра
lpr Информация системного журнала принтера
mail Почтовая системаизsyslogинформация
mark Программа отправки сообщений по расписанию и отметки времени
news Новости системыиз системного журнала
user Локальное пользовательское приложение из информации системного журнала
uucp uucpребеноксистемаизsyslogинформация
local0..7 Локальный тип информации системного журнала, который может быть определен пользователем.
\* Обозначает различное оборудование, указанное выше.
«Уровень» в зарезервированном поле отражает важность информации, которая может быть:
emerg Чрезвычайная ситуация, состояние паники. Обычно это должно быть передано всем пользователям;
alert Тревога, текущий статус должен быть немедленно исправлен. Например, происходит сбой базы данных системы;
crit Критический статус из-за предупреждения. Например, аппаратный сбой;
err Другие ошибки;
warning предупреждать;
notice Примечание. Сообщается о состоянии отсутствия ошибок, но его следует обрабатывать особым образом;
info сообщить информацию;
debug Информация при отладке программы;
none Обычно используемая при отладке программы инструкция без уровня и типа генерирует информацию, не отправляя ее. Например, *.debug;mail.none означает, за исключением случаев отладки.
Вся информация, кроме информации по электронной почте, отправляется.
В поле «действие» указывается пункт назначения, которому отправляется сообщение. Может быть:
/filename файл журнала. Имя файла указывается по абсолютному пути. Этот файл должен быть создан заранее;
@host удаленный хост; За символом @ может следовать IP-адрес или имя домена. По умолчанию псевдоним loghost уже указан в файле /etc/hosts.
Он закреплен за этой машиной.
user1,user2 Укажите пользователя. Если указанный пользователь вошел в систему, он получит сообщение;
* Все пользователи. Все вошедшие в систему пользователи получат сообщение.
Давайте посмотрим на /etc/syslog.conf. документсерединаиз Пример:
……
*.err;kern.debug;daemon.notice;mail.crit [TAB] /var/adm/messages
……
В этой строке «действие» Это /var/adm/messages, который нас часто волнует. файл, источником вывода информации в него "селектор" является: • *.err - Все общие сообщения об ошибках; • kern.debug - Ядро генерирует отладочную информацию; • daemon.notice - демониз Внимание информация; • mail.crit - Почтовая системакритической предупреждающей информации
Например, если вы хотите записывать все сообщения электронной почты в файл середина, выполните следующие действия:
#Log all the mail messages in one place
mail.* /var/log/maillog
Другие устройства также имеют свои собственные журналы. УУКП и новости Устройства могут генерировать множество внешних сообщений. Он сохраняет эти сообщения в свой собственный журнал (/var/log/spooler) и ограничивает уровень до «ошибка». или выше. Например:
# Save mail and news errors of level err and higher in aspecial file.
uucp,news.crit /var/log/spooler
Когда приходит срочное сообщение, вы можете захотеть, чтобы все пользователи получили его. Вы также можете получить и сохранить свои собственные журналы.
#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn
alert Сообщения должны писаться под root и тигр из В личном кабинете:
#Root and Tiger get alert and higher messages
*.alert root,tiger
иногда системный журнал Будет создано большое количество сообщений. Например, ядро("керн" устройство) может быть длительным. Пользователи могут захотеть регистрировать сообщения ядра в /dev/console. середина. В следующем примере показано, что ведение журнала ядра закомментировано:
#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console
Пользователь может указать все устройства в одной строке. В следующем примере информация помещается или Сообщения более высокого уровня отправляются в /var/log/messages, кроме почты. снаружи. Уровень «нет» Чтобы заблокировать устройство:
#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages
В некоторых случаях журнал может быть отправлен на принтер, так что сетевым злоумышленникам будет бесполезно изменять журнал. Обычно требуется обширное журналирование. Системный журнал оборудованиедазлоумышленникизважная цель。один для других хостов
Журналы обслуживания особенно уязвимы для атак на сервер, поэтому обратите на них особое внимание. Имеется небольшой регистратор команд. Предоставляет оболочку для файлов системного журнала syslog(3). специалисты по созданию файлов журналов.
Средний вход. Использование: регистратор Например: логгер This is a test! Он создаст системный журнал следующим образом Рекорд: Ян 1 00:08:49 TinaLinux user.notice root: this is a test!
busybox изsyslogd Информацию журнала ядра невозможно получить напрямую. Для этой функции требуется klogd. выполнить. Запустите klogd после запуска syslogd Вот и все.
klogd Есть два способа получить журнал ядра: 1) через klogctl() Интерфейс 2) через /прок или узел устройства. Какой метод выбрать, можно определить через менюconfig серединаiz"Использовать the klogctl()
интерфейс» (FEATURE_KLOGD_KLOGCTL), который нужно установить.
klogd После получения журнала ядра используйте системный журнал Функция отправляет журналы в системный журнал демон。
Уведомление:
Хотя клогд заключается в использовании openlog("kernel", 0, LOG_KERN) , но судя по комментариям в исходниках, в glibc Средний LOG_KERN Можно заменить на LOG_USER , поэтому при использовании klogd Нужен в процессе
Уведомление,журнал ядраизfacility Это может быть пользователь вместо керна.
busybox чтение журнала для использования из syslogd Общая память кольцевая buffer Прочитать информацию журнала в для этого требуется системный журнал Запустить с помощью -C[size_kb] параметры, И вам необходимо отключить функцию файла конфигурации поддержки (FEATURE_SYSLOGD_CFG).
syslog-ng это системный журнал демониз Еще одна реализация, которая сама по себе не зависит от ubox илиbusybox,Это независимое прикладное программное обеспечение. Он поддерживает более богатые элементы конфигурации.,Журналы можно сделать более гибкими
из обработки.
syslog-ng из Конфигурационный файл /etc/syslog-ng.conf , Подробную информацию о синтаксисе можно найти в официальном документе https://www.syslog-ng.com/technical-documents/list/syslog-ng-open-source-edition. , ниже приведен пример конфигурации:
@version:3.9
options {
chain_hostnames(no);
create_dirs(yes);
flush_lines(0);
keep_hostname(yes);
log_fifo_size(256);
log_msg_size(1024);
stats_freq(0);
flush_lines(0);
use_fqdn(no);
time_reopen(1); # Сколько секунд ждать перед восстановлением соединения после отключения (по умолчанию 60 Второй)
keep_timestamp(no); # Если информация журнала не сохраняется и имеет собственную временную метку, используйте syslog-ng. Получите журнал времени в виде метки времени
};
# Определите шаблон, вы можете использовать шаблон Обработка содержимого каждой части журнала
# Здесь используется шаблон из журнала будет отображаться только временная метка, заголовок журнала (название программы и т. д.) и информация тела.
# По сравнению с информацией журнала по умолчанию имя хоста будет отсутствовать.
template t_without_hostname {
template("${DATE} ${MSGHDR}${MESSAGE}\n");
};
# Определите источник журнала, то есть откуда брать журнал
# Здесь имеется в виду из syslog-ng Внутренне и через Unix Датаграммный сокет из /dev/log Получить журнал
source src {
internal();
unix-dgram("/dev/log");
};
# из /proc/kmsg Получите логин ядра
source kernel {
file("/proc/kmsg" program_override("kernel"));
};
# Определите место назначения журнала, то есть куда отправить журнал.
# Это означает вывод журнала в файл /var/log/messages и использование только что определенного шаблона. Удалить имя хоста
destination messages {
file("/var/log/messages" template(t_without_hostname));
};
# Выведите журнал на консоль и используйте только что определенный шаблон. Удалить имя хоста
destination console {
file("/dev/console" template(t_without_hostname));
};
# Определить журнал, используемый для определения источников из В какие места отправляются логи?
log {
source(src);
source(kernel);
destination(messages);
destination(console);
};
Непосредственно выполните команду syslog-ng Вы можете запустить syslog-ng. Ниже приведена процедура. скрипт автозапускаизпримерребенок:
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2016 OpenWrt.org
START=50
STOP=99
USE_PROCD=1
start_service() {
[ -f /etc/syslog-ng.conf ] || return 1
procd_open_instance
procd_set_param command /usr/sbin/syslog-ng
procd_close_instance
}
stop_service() {
/usr/sbin/syslog-ng-ctl stop
}
reload_service() {
stop
start
}
syslog-ng Не имеет вращения из функции, не может ограничить размер файла журнала, обычно через logrotate Или напишите свой собственный сценарий для его реализации.
Инструмент logrotate поддерживает такие функции, как сжатие файлов журналов и перенос их в другие файлы журналов.
Используйте логротат Вам необходимо добавить путь к файлу конфигурации, например logrotate /etc/logrotate.conf , файл конфигурации с синтаксисом может быть
Ссылка https://jlk.fjfi.cvut.cz/arch/manpages/man/logrotate.8.
Обычно вы можете использовать include в файле конфигурации Команда включает все файлы конфигурации по определенному пути, например /etc/logrotate.conf. Добавьте предложение, включите /etc/logrotate.d Может быть упакован
Содержит /etc/logrotate.d Оглавление Внизиз Конфигурационный файл,Тогда в разделе «Оглавление» файлы конфигурации можно будет различать по разным приложениям и разным файлам журналов.,Удобная развязка.
Ниже приведен пример индивидуальной конфигурации для определенного файла журнала:
# Для файла из/var/log/messages Из конфигурации элементы конфигурации в фигурных скобках могут переопределить глобальную конфигурацию.
/var/log/messages {
hourly # Передача выполняется каждый час (измеренный период передачи составляет менее одного часа и может быть успешно запущен.
# Но если установлено ежедневно, еженедельно Похоже, что выполнение завершится неудачно, если период передачи слишком короткий)
size 2M # Размер файла превышает 2M Будет перенесен, когда
rotate 9 # сохранить 9 файлы журнала исторического дампа
olddir /data # Сброшенные файлы журнала истории будут сохранены в /data. Оглавление Вниз createolddir # Если исторический файл журнала из целевого Оглавления не существует, он будет создан автоматически.
compress # Сжимать файлы исторических журналов (по умолчанию используется gzip)
copytruncate # При переносе сделайте копию исходного файла журнала, затем обрежьте ее, а затем перенесите файлы после копирования;
# Вместо перемещения исходного файла журнала непосредственно по целевому пути, чтобы избежать исходного файла журнала изinode. происходят изменения.
}
Что следует отметить:
error: Ignoring XXX because of bad file mode - must be 0644 or 0444.
*/3 * * * * /usr/sbin/logrotate /etc/logrotate.conf
logger используется в оболочке От среднего до системного журнала демон отправляет сообщения, использование похоже на echo Заказ:
logger "foobar"
Следующее - изменить локальный системный журнал Требование записи журналов в локальные файлы имеет другие требования к системному журналу. Планы сравниваются.
преимущество: • OpenWrt Он поставляется изначально и может использоваться с небольшой настройкой. • Поставляется со сбором журнала ядра и простым поворотом Функция. • отличается от busybox чтение журнала ,ubox чтение журнала Поддерживает запись логов в файлы и с кольца одновременно. buffer Прочитайте лог в из Функции.
недостаток: • Зависит от проца с Убусом . (Не проверялось, можно ли использовать его без этих двух) • rotate Функция поддерживает только передачу файлов журналов на тот же Оглавление Вниз,И сохраните только один исторический файл,Нет функции сжатия (не найдено никаких элементов конфигурации для выполнения соответствующих настроек).
преимущество: • syslogd Поставляется с поворотом Функция Перед записью каждого журнала в файл сначала проверяется, превысил ли размер файла установленный предел ценить. действовать. Поскольку проверка размера файла выполняется при записи журнала, а не через определенный интервал времени, это может быть гарантировано. поворот Файл журнала не будет сильно превышать верхний предел цен. А потому что запись логов и ротация Это реализовано в том же процессе. Вы можете напрямую переименовать файл журнала при его передаче. Нет необходимости создавать еще одну копию. Ограничение на оставшееся доступное пространство logrotate отсутствует. изcopytruncate Такой большой.
• syslogd Обеспечит повторное открытие файла журнала каждую секунду, не нужно беспокоиться о файле inode. Изменять,Файлы журналов могут быть удалены по желанию при очистке журналов.,Новый файл журнала может продолжать записываться в журнал в обычном режиме в следующую секунду.
недостаток:
• syslogd Он не содержит функции получения логов ядра и требует дополнительного запуска klogd. Приходите поддержать. • syslogd Пользовательский префикс и поворот не поддерживаются. Доступна функция временного сжатия, файлы журналов можно переносить только в один и тот же файл, а целевой путь нельзя настроить. • Запишите журнал в файл и не можете использовать logread. 。
преимущество: • syslog-ng Его собственная функция относительно мощная, она может более гибко изменять и фильтровать журналы, а также имеет возможность получать журналы ядра. • logrotate Можно добиться большей гибкости при повороте Такие функции, как настраиваемые целевые пути, сжатые файлы журналов и т. д.
недостаток: • syslog-ng Он не может контролировать размер файла сам по себе и не может уведомить logrotate. Чтобы выполнить вращение, вы можете полагаться только на crond Подождите, пока демон будет периодически выполнять logrotate , вам необходимо сбалансировать скорость роста логов и регулярный интервал проверки, иначе пространство хранения может быть заполнено логами. • Лог-файл изinode нельзя изменить произвольно, иначе syslog-ng Лог может быть записан неправильно. поэтому: • logrotate Необходимо настроить как copytruncate , в ротации «Копировать файл» существует Этот процесс имеет определенные требования к оставшемуся пространству для хранения, в противном случае его следует повернуть. Процесс потерпит неудачу. • При очистке содержимого файла журнала вручную вы не можете удалить файл журнала напрямую. Вам необходимо использовать что-то похожее на следующий заказ:
echo > /var/log/messages
syslog Это зависит от Unix Сокет домена реализует IPC (межпроцессный Связь, межпроцессное взаимодействие), семейство протоколов — AF_LOCAL. (илиAF_UNIX ),независимо от розеткииз Тип — поток байтов
(SOCK_STREAM ) или датаграмма (SOCK_DGRAM), оба варианта надежны при использовании Unix. Процесс связи сокета домена середина, если операция чтения заблокирована и буфер заполнен, операция записи также блокируется
Это заблокирует, и никакие данные не будут удалены в процессе.
Поэтому, когда системный журнал Когда демон по какой-либо причине блокируется и время работы увеличивается, если буфер в это время заполнен, это может повлиять на вызов системного журнала. Функциональность приложения из-за производительности. Приложения предназначены
Необходимо учитывать системный журнал На функцию могут повлиять другие факторы, и ее нельзя использовать без ограничений. системный журнал функция печатает, нельзя предполагать, что она всегда будет выполняться быстро.
О буферах,Это должно быть связано с настройками сокета ядра. Для Unix /proc/sys/net/unix/max_dgram_qlen влияет на размер буфера.,Но конкретно
Механизм неясен. Его значение по умолчанию — 10, вы можете использовать sysctl. Внесите изменения:
sysctl -w net.unix.max_dgram_qlen=XX
Программа «Обычно» procd init из программы выберет эти два инструмента по умолчанию.
logd от PACKAGE_logd предоставлено, конфигурация меню серединаиз Местоположение:
make menuconfig --->
Base system --->
<*> logd
Рисунок 5-1: Схема конфигурации журнала
logread Автор: PACKAGE_ubox предоставлено, конфигурация меню серединаиз Местоположение:
make menuconfig --->
Base system --->
<*> ubox
Рисунок 5-2: Схема конфигурации ubox
Они относятся к загрузочному сценарию /etc/init.d/log. от PACKAGE_logd Предоставленные элементы конфигурации расположены в файле /etc/config/system; середина, по умолчанию PACKAGE_base-files поставлять,Если вы хотите изменить конфигурацию по умолчанию,Можно найти в
target/allwinner/<Название плана>/base-files/etc/config/ Поместите пользовательскую изсистему в раздел Оглавление. чтобы перезаписать файл по умолчанию.
busybox изsyslog Инструменты в меню конфигурации серединаиз Местоположение:
make menuconfig --->
Base system --->
busybox --->
System Logging Utilities --->
[*] klogd
*** klogd should not be used together with syslog to kernel printk buffer ***
[*] Use the klogctl() interface
[*] logger
[*] logread
[*] Double buffering
[*] syslogd
[*] Rotate message files
[ ] Remote Log support
[*] Support -D (drop dups) option
[*] Support syslog.conf
(256) Read buffer size in bytes
[*] Circular Buffer support
(4) Circular buffer size in Kbytes (minimum 4KB)
[*] Linux kernel printk buffer support
Соответствующие элементы конфигурации см. в предыдущей главе.
busybox изsyslog В комплект поставки инструмента не входит сценарий запуска. Если вы хотите запустить его автоматически, вам необходимо написать его самостоятельно. в rc.final Добавьте автозапуск при загрузке, как показано ниже:
#Подключить SD-карту
mount /dev/mmcblk0p1 /mnt/sdcard/
mkdir /mnt/sdcard/log
#Включите функцию поворота, размер каждого журнала — 4M, а максимальное количество записей — 10.
syslogd -s 4096 -b 10 &
sleep 1
#Запись ядраизлога одновременно
klogd &
Создайте /etc/syslog.conf. файл,журнал Запись файлов на SD Карта середина, содержание следующее:
*.* /mnt/sdcard/log/message
syslog-ng в меню конфигурации серединаиз Местоположение:
make menuconfig --->
Administration --->
<*> syslog-ng
Рисунок 5-3: Схема конфигурации syslog-ng
Он поставляется с процедурой Сценарий запуска (будет автоматически скопирован на небольшой компьютер) и пример файла конфигурации (не будет автоматически скопирован на маленький компьютер). Оба находятся в package/admin/syslog-ng/files. Оглавление
Вниз.Можете обратиться к примеру файла конфигурации syslog-ng.conf_example. Настройте копию syslog-ng.conf Поместите это на маленький компьютер из/etc Оглавление Вниз.
logrotate в меню конфигурации серединаиз Местоположение:
make menuconfig --->
Utilities --->
<*> logrotate
Рисунок 5-4: Схема конфигурации logrotate
Он поставляется с файлом конфигурации logrotate.conf. , находится в package/utils/logrotate/files Оглавление, оно будет автоматически скопировано на маленький компьютер из/etc Оглавление Вниз.
Файл конфигурации содержит некоторые глобальные элементы конфигурации.,И будет включать /etc/logrotate.d, поэтому пользовательскую конфигурацию можно разместить на маленькой машине в /etc/logrotate.d В разделе Оглавление выполните logrotate.
*.* /mnt/sdcard/log/message
syslog-ng в меню конфигурации серединаиз Местоположение:
make menuconfig --->
Administration --->
<*> syslog-ng
[Изображения по внешней ссылке передаются...(img-Ht2yt40X-1677205584554)]
Рисунок 5-3: Схема конфигурации syslog-ng
Он поставляется с процедурой Сценарий запуска (будет автоматически скопирован на небольшой компьютер) и пример файла конфигурации (не будет автоматически скопирован на маленький компьютер). Оба находятся в package/admin/syslog-ng/files. Оглавление
Вниз.Можете обратиться к примеру файла конфигурации syslog-ng.conf_example. Настройте копию syslog-ng.conf Поместите это на маленький компьютер из/etc Оглавление Вниз.
logrotate в меню конфигурации серединаиз Местоположение:
make menuconfig --->
Utilities --->
<*> logrotate
[Изображения по внешней ссылке передаются...(img-QeB1vkWK-1677205584555)]
Рисунок 5-4: Схема конфигурации logrotate
Он поставляется с файлом конфигурации logrotate.conf. , находится в package/utils/logrotate/files Оглавление, оно будет автоматически скопировано на маленький компьютер из/etc Оглавление Вниз.
Файл конфигурации содержит некоторые глобальные элементы конфигурации.,И будет включать /etc/logrotate.d, поэтому пользовательскую конфигурацию можно разместить на маленькой машине в /etc/logrotate.d В разделе Оглавление выполните logrotate.
/etc/logrotate.conf будет вызван автоматически (обратите внимание, что разрешение файла должно быть 0644 или 0444 )。