我需要一个小型的可移植框架来登录嵌入式Linux。理想情况下,它会输出到文件或套接字,并且具有某种日志旋转/压缩也会很好。
到目前为止,我已经发现了很多框架,但是几乎所有框架都有令人生畏的构建过程或需要使用应用程序框架(例如log4cxx需要Apache Portable Runtime,我宁愿不打扰它。 )。
只是寻找简单而强大的东西,但我似乎发现的一切都很复杂,或者需要大量的二级垃圾来运行。
连连呢? (如果答案是我自己的,那很好,但是......避免这样做很好)
答案 0 :(得分:9)
使用syslog(3)中的BusyBox和syslogd。剥离时BusyBox可以非常紧凑,并且不依赖于libc以外的任何东西。您可以删除所有不需要的内容,因此完全可以使用仅进行日志记录。
我们在许多嵌入式系统(Linux和uClinux)上使用BusyBox,并且发现其日志记录功能非常可靠。
答案 1 :(得分:2)
我没有使用log4cxx模块的经验,但我在运行Linux的嵌入式目标上使用APR(它基于Atmel AT91SAM926x处理器系列)。配置和编译非常简单(或多或少./configure --host = arm-none-linux-gnueabi)所以我不会害怕走下log4cxx路径。
答案 2 :(得分:1)
也许您应该考虑花一些时间在一个好的日志框架上,因为这是您将在嵌入式Linux上使用的内容。 ......和printf ......
我做了一些我可以在运行时启用/禁用每个模块的各种日志记录级别的东西。
您是否曾尝试在Linux上调试多线程应用程序?
祝你好运!答案 3 :(得分:0)
在C中实现非常强大的日志记录机制,需要大约1000个代码行(来自我们的代码库)。其中90%定义了不同的部分。这包括不同的宏DBG_E DBG_W DBG_TRACE
等...并拆分到该部分,运行时更改调试级别和调试模块(不包括压缩只是简单的打印抽象,可以以不同的方式实现文件/套接字/串行等......)
我估计实施需要几天时间。您需要花费几天时间才能获得满足您的需求的东西,仅此而已,我知道您正在开发嵌入式平台,占用空间和内存使用非常重要,最佳和优化的解决方案将是您编写的解决方案。我们投资那几天。并在不同的产品/项目中使用它,并根据实际需要调整/改进 。通用解决方案的主要问题是它通常会根据您的需要而做更多的事情,这个更多通常只是资源的腰部。
答案 4 :(得分:0)
我无法想象您的平台太小而无法包含log4cxx和APR,也不是一个大型库,即使最小的平台也可能有空间。
你可以使用由C库提供的syslog - 一个syslog守护进程由busybox提供(毫无疑问,如果你在一个非常小的平台上,你已经使用过了)。我不知道busybox的syslogd是否可以登录到网络,但它具有一定程度的灵活性。你可以非常简单地使用shell脚本进行日志轮换。
答案 5 :(得分:0)
使用 klogd 它会读取内核日志消息(来自/ proc / kmsg内核)接口,并将这些消息重定向到适当的目录。您可以使用用户可配置的 syslogd 守护程序以及将内核消息重定向到/ var / log /目录中的相应文件的klogd。 例如,与邮件服务相关的日志将存储在 /var/log/main.log 中,与内核启动过程相关的日志将存储在 /var/log/boot.log 强>。用户可以使用syslogd配置文件配置日志解析。
但是使用syslogd可能会导致系统性能下降,因为每个日志消息syslog守护进程都会执行磁盘操作以将该日志存储到适当的文件中
记录序列
来自内核的消息 ---> klogd (从内核环缓冲区访问消息) - > syslogd - >的/ var /日志/ *