Каркасы логирования для встроенного Linux? - PullRequest
9 голосов
/ 04 декабря 2008

Мне нужна небольшая портативная платформа для входа во встроенный Linux. В идеале это будет вывод в файл или сокет, и было бы неплохо иметь ротацию / сжатие журналов.

Пока что я нашел много платформ, но почти все они имеют сложные процедуры сборки или требуют использования платформ приложений (например, для log4cxx требуется Apache Portable Runtime, что я бы не стал беспокоить .. .).

Просто ищу что-то простое и надежное, но все, что я нахожу, сложно или требует много второстепенного мусора, чтобы просто запустить.

Предложения? (и если ответ будет моим, это нормально, но ... было бы здорово избежать этого)

Ответы [ 6 ]

9 голосов
/ 04 декабря 2008

Используйте syslog (3) и syslogd из BusyBox . BusyBox может быть очень компактным, когда урезан, и не зависит ни от чего, кроме libc. Вы можете удалить все, что вам не нужно, поэтому вполне возможно использовать его только для регистрации.

Мы используем BusyBox на ряде встроенных систем, как Linux, так и uClinux, и считаем его средства ведения журнала очень надежными.

2 голосов
/ 07 декабря 2009

У меня нет опыта работы с модулем log4cxx, но я использую APR на встроенной цели под управлением Linux (она основана на семействе процессоров Atmel AT91SAM926x). Настроить и скомпилировать было действительно просто (более или менее ./configure --host = arm-none-linux-gnueabi), поэтому я бы не боялся идти по пути log4cxx.

1 голос
/ 18 мая 2009

Может быть, вам стоит подумать о том, чтобы потратить некоторое время на хорошую инфраструктуру ведения журналов, поскольку именно это вы собираетесь использовать во встроенном Linux. ... и printf ...

Я приготовил что-то, где я могу включить / отключить различные уровни ведения журнала для модуля во время выполнения.

Вы когда-нибудь пробовали отлаживать многопоточные приложения в Linux?

Удачи!

0 голосов
/ 25 сентября 2014

Используйте klogd , он читает интерфейс сообщений журнала ядра (из / proc / kmsg kernel) и перенаправляет эти сообщения в соответствующий каталог. вы можете использовать настраиваемый пользователем демон syslogd вместе с klogd, который перенаправит сообщения ядра в соответствующие файлы в каталоге / var / log /. Например, журналы, относящиеся к почтовой службе, будут храниться в / var / log / main.log , а журналы, относящиеся к процессу загрузки ядра, будут храниться в / var / log / boot.log, Пользователь может настроить синтаксический анализ журнала с помощью файла конфигурации syslogd.

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

Журнал последовательности

Сообщения от ядра ---> klogd (доступ к сообщениям из кольцевого буфера ядра) -> syslogd -> / var / log / *

0 голосов
/ 04 декабря 2008

Я не могу представить, что ваша платформа слишком мала, чтобы включать log4cxx и APR, и при этом не является большой библиотекой, и даже на самой крошечной платформе, вероятно, будет достаточно места для них.

Вы можете просто использовать syslog, который предоставляется библиотекой C - демон syslog предоставляется busybox (который, без сомнения, вы уже используете, если находитесь на действительно крошечной платформе). Я не знаю, может ли syslogd busybox войти в сеть, но у него есть некоторый уровень гибкости. Вы можете выполнять ротацию логов с помощью сценариев оболочки довольно просто.

0 голосов
/ 04 декабря 2008

Реализация очень надежного механизма ведения журналов в C, занимающего около 1000 строк кода (из нашей базы кода). 90% это определяет различные разделы. Это включает в себя различные макросы DBG_E DBG_W DBG_TRACE и т. Д. И разделение на разделы, изменение времени выполнения уровня отладки и модулей отладки (не включает сжатие, а просто простую абстракцию печати, которую можно реализовать различными способами: файл / сокет / последовательный и т. Д. .).
По моим оценкам, это займет около нескольких дней. С другой стороны, вы потратите несколько дней на то, чтобы получить то, что работает для ваших потребностей и ничего более, я понимаю, что вы работаете на встроенной платформе, и занимаемая площадь и использование памяти важны, лучшее и оптимизированное решение - это то, которое вы напишите. Мы вложили эти несколько дней. и использовать его в разных продуктах / проектах и ​​корректировать / улучшать с течением времени в соответствии с реальными потребностями . Основная проблема общего решения в том, что он обычно будет делать то, что вам нужно, и намного больше, это больше , как правило, просто объем ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...