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