2008-12-03 16 views
9

Necesito un marco pequeño y portátil para iniciar sesión en Linux integrado. Lo ideal sería que saliera a un archivo o un socket, y tener algún tipo de rotación de registro/compresión también sería bueno.marcos de registro para Linux integrado?

Hasta ahora, he encontrado muchos frameworks, pero casi todos tienen procedimientos de construcción desalentadores o requieren el uso de frameworks de aplicaciones (por ejemplo, log4cxx requiere el Apache Portable Runtime, con el que prefiero no molestarme. ..).

Solo busco algo simple y robusto, pero todo lo que parece encontrar es complicado o requiere mucha basura secundaria solo para ejecutar.

Sugerencias? (y si la respuesta es independiente, está bien, pero ... es genial evitar eso)

Respuesta

0

Implementando un mecanismo de registro muy robusto en C tomando aproximadamente 1000 líneas de código (de nuestra base de códigos). El 90% de esto define de diferentes secciones. Esto incluye diferentes macros DBG_E DBG_W DBG_TRACE etc ... y spliting a la sección, ejecutar el cambio de tiempo de los niveles de depuración y depuración de módulos (no incluye la compresión de abstracción de impresión simple que se puede implementar de diferentes maneras archivo/socket/serial etc ...) .
Estimaré que la implementación tardará unos pocos días. Lo malo es que pasarás unos días con la ventaja de que obtendrás algo que funcione para tus tus necesidades de y nada más, entiendo que estás trabajando en la plataforma integrada y el espacio y el uso de la memoria son importantes, la mejor solución optimizada será uno que escribas Invertimos esos pocos días unos. y usarlo en diferentes productos/proyectos y ajustar/mejorar con el tiempo pasado según las necesidades reales. El problema principal de la solución genérica que generalmente hará algo así como lo que necesita y mucho más, este más por lo general solo la cintura de los recursos.

0

No me puedo imaginar que su plataforma sea demasiado pequeña para incluir log4cxx y APR, ni una gran biblioteca, ni siquiera la más pequeña plataforma es probable que tenga espacio para ellos.

Puede usar syslog, proporcionado por la biblioteca C - busybox proporciona un daemon syslog (que sin duda, ya usa si se encuentra en una plataforma muy pequeña). No sé si el syslogd de busybox puede iniciar sesión en la red, pero tiene cierto nivel de flexibilidad. Puede hacer la rotación de registros utilizando scripts de shell de manera bastante trivial.

9

Use syslog(3) y syslogd desde BusyBox. BusyBox puede ser muy compacto cuando se quita y no depende de nada más que libc. Puede quitar todo lo que no quiere, por lo que es perfectamente posible usarlo solo para iniciar sesión.

Utilizamos BusyBox en una serie de sistemas integrados, tanto Linux como uClinux, y consideramos que sus instalaciones de registro son altamente confiables.

1

Tal vez debería considerar pasar algún tiempo en un buen marco de trabajo de registro, ya que esto es lo que va a utilizar en su Linux embebido. ... y printf ...

He cocinado algo donde puedo activar/desactivar varios niveles de registro por módulo en tiempo de ejecución.

¿Alguna vez intentó depurar aplicaciones multiproceso en Linux?

¡Buena suerte!

+0

Estoy de acuerdo. En un proyecto anterior, habíamos desarrollado algo similar con el control del tiempo de ejecución del registro. ¡Funcionó muy bien! Lástima que no pudimos abrir el código fuente. –

2

No tengo experiencia con el módulo log4cxx pero estoy usando APR en un objetivo incrustado ejecutando Linux (se basa en la familia de procesadores Atmel AT91SAM926x). Fue muy simple de configurar y compilar (más o menos ./configure --host = arm-none-linux-gnueabi) así que no tendría miedo de ir por la ruta log4cxx.

0

Use klogd lee la interfaz de los mensajes de registro del kernel (desde/proc/kmsg kernel) y redirige esos mensajes al directorio apropiado. puede usar el daemon syslogd configurable por el usuario junto con klogd que redireccionará los mensajes del núcleo a los archivos apropiados en el directorio/var/log /. Por ejemplo, los registros relacionados con el servicio de correo se almacenarán en /var/log/main.log y los registros relacionados con el proceso de arranque del núcleo se almacenarán en /var/log/boot.log. El usuario puede configurar el análisis de registros usando el archivo de configuración syslogd.

Pero el uso de syslogd puede conducir a la degradación del rendimiento del sistema ya que por cada demonio de mensajes de registro syslog hará operación de disco para almacenar dicho registro en el archivo apropiado

secuencia de registro

mensajes de kernel --->klogd (mensajes de acceso de memoria intermedia de anillo del núcleo) ->syslogd ->/var/log/*

Cuestiones relacionadas