Редагувати 02.06.2016
Якщо ви взагалі намагаєтесь знайти "Початкові повідомлення журналу", поставте прапорець /var/log/upstart/
. Ось де Upstart економить stdout
і stderr
від сервісів Upstart. Завдяки відповіді leopd за вказівку на це.
Якщо ви шукаєте повідомлення журналу від самої Upstart, які налаштовані initctl log-priority
та випромінюються initctl emit
, читайте далі!
Коротка версія
Записи журналу фактично повинні відображатися у dmesg. Незважаючи на це, вони не відображаються за замовчуванням у /var/log
.
Якщо ви хочете, щоб вони /var/log
теж були, додайте $KLogPermitNonKernelFacility on
в конфігурацію rsyslogd. Я пропоную створити спеціальний файл, як /etc/rsyslog.d/60-custom.conf
уникнути редагування /etc/rsyslog.conf
, оскільки цим керує dpkg. Тепер Upstart повідомлення повинно відображатися в /var/log/syslog
, як тільки ви встановите Upstart - х log-priority
до info
або так.
Довга версія
Це взяв мене днів , щоб вистежити, але , по- видимому Upstart (1.5) не НЕ увійти в системний журнал, тобто, він не викликає функцію GLibC syslog()
. Натомість Upstart записує в буфер кільця ядра, що читає dmesg. Тепер, я не думаю , що це було можливо для користувачів космічних процесів для запису в цей буфер, але , мабуть , вони можуть шляхом запису /dev/kmsg
, і це саме те , що робить Upstart. Так ось перша частина головоломки.
Друга частина полягає в тому, що існує думка, що повідомлення, записані в буфер кільця ядра, автоматично копіюються в syslog ядром (принаймні, так я завжди думав). Виявляється, це насправді робиться демоном простору користувача, традиційно klogd, який працює в тандемі з syslogd. Очевидно, rsyslogd замінює syslogd, але, мабуть, він замінює і klogd (на кшталт: див. Примітки наприкінці).
Третя частина полягає в тому, що повідомлення, записані в буфер кільця ядра з простору користувача, насправді виглядають відмінними від повідомлень, написаних з простору ядра: вони мають іншу функцію. dmesg має декілька варіантів, які взаємодіють із цим: -x
покаже об'єкт (та пріоритет), тоді як -u
і -k
скаже dmesg, щоб відображати лише повідомлення про об'єкти користувача та повідомлення про об'єкти ядра відповідно.
Тепер ось клінік: rsyslogd за замовчуванням ігнорує повідомлення, що не мають ядра, коли він читає повідомлення з буфера кільця ядра. Відповідна опція конфігурації - це $KLogPermitNonKernelFacility
, яка за замовчуванням вимкнена, і її потрібно увімкнути, якщо ви хочете, щоб rsyslogd обробив ці повідомлення. Зауважте, що решта конфігурації rsyslogd буде розглядати всі повідомлення з буфера кільця ядра як такі, що мають kern
об'єкт, незалежно від об'єкта, який вони мали у буфері кільця ядра.
Більше інформації
syslog
Код може записати в syslog, викликавши функцію glibc syslog()
, описану в man 3 syslog
. Мабуть, ці функції пишуть /dev/log
. Код можна прочитати з syslog, прочитавши /dev/log
, і саме це syslogd
і робить його заміну. rsyslogd
зчитує /dev/log
за допомогою свого imuxsock
вхідного модуля.
Кільцевий буфер ядра
Простір ядра записує в цей буфер, викликаючи функцію ядра printk()
, тому його іноді називають буфером printk. Користувацький простір може записати на нього, написавши на /dev/kmsg
. Користувацький простір може читати з цього буфера кількома методами: він може читати з /proc/kmsg
(що dmesg робить за замовчуванням), або він може читати з /dev/kmsg
, або він може викликати системний виклик syslog()
, який описаний в man 2 syslog
і повністю відрізняється від syslog()
описаної функції glibc в man 3 syslog
. glibc фактично надає обгортку для системного виклику syslog()
, викликаного klogctl()
, щоб полегшити цю плутанину.
Традиційно klogd
читає з одного з цих інтерфейсів, а потім викликає функцію glibc, syslog()
щоб скопіювати їх у syslog. rsyslogd читає один з цих інтерфейсів через свій imklog
вхідний модуль, але AFAIK не заважає викликати glibc syslog()
, тому це не зовсім як klogd; він просто обробляє вихід так imklog
само, як він обробляє вихід з будь-якого іншого модуля введення. Існує додаткове застереження, що весь imklog
вихід має kern
об'єкт незалежно від повідомлень про об'єкти, які були в буфері кільця ядра.
Список літератури
dmesg
але це не мало сенсу без контексту, який тут наведено.