我已经在Java语言中工作了很长一段时间,我已经习惯于使用log4j库来记录日志。这是一个很棒的库,现在我要转到C语言,我想看看在这种语言中是否有类似的日志库。
发布于 2014-12-19 01:12:54
到目前为止,我知道以下用于日志记录的库: log4c、sclog4c、syslog和zlog。
log4c
log4c是为了成为C语言的Log4J而发明的。如果你特别想找“像Log4J这样的东西”,因为你想让它像" Log4J“,那么这很可能就是你要找的东西。
链接
sclog4c
发明sclog4c的目的是让它和java.util.logging最常用的特性一样简单--尽可能简单。如果你正在寻找“像Log4J一样的东西”,因为你想让它尽可能的小和简单,这很可能就是你想要的。
链接
系统日志
syslog最初是由Eric Allman作为sendmail的一部分开发的,现在已经成为POSIX环境中守护程序/服务器日志记录的事实标准。它是基于客户端-服务器的,通常希望记录日志的守护程序会将日志数据发送到监听UDP端口514的syslogd。如果您因为实际想要记录一个守护进程或服务器而专门查找“类似Log4J的内容”,那么这很可能就是您要查找的内容。
链接
zlog
这个被发明出来就像log4c一样,只是--根据它的描述--同时更小,更灵活。
链接
其他
能力vs.精益
由于C语言连接、思考和工作方式的不同,我不会去寻找在一般情况下功能强大的日志记录框架--不像Java。如果您要开发“成熟的桌面应用程序”甚至更多,那么使用功能强大的框架(如Java )进行日志记录无疑是一种不错的选择。如果您正在实现命令行工具或类似工具,我敢打赌精益框架会更好--为什么您要仅仅为了日志记录而依赖lib2xml……
速度
以防速度下降。出于某些原因,不浪费周期对你很重要,在评估其他参数之前,寻找一个使用宏来评估日志级别的日志记录框架。
缺点是您不能使用有副作用的参数调用日志例程。但不管怎样,这不应该是一个用例。如果日志语句不能因为包含副作用而被忽略,那将是令人惊讶的。
优点是,这样的框架中的日志语句添加的周期太少,以至于它们几乎不存在-只需访问全局、检查和条件分支,跳过其余的日志代码-2条指令,在当今的许多CPU上,最好的情况是1个周期。
免责声明
我是sclog4c的作者。
发布于 2013-07-19 16:16:04
发布于 2015-12-01 17:29:56
另一个要考虑的选项是zf_log
<代码>H112自定义输出函数(文件、系统日志等)<代码>H213<代码>F214<代码>
例如,将输出INFO日志消息:
ZF_LOGI("Number of arguments: %i", argc);它将如下所示:
04-29 22:43:20.244 40059 1299 I hello.MAIN main@hello.c:9 Number of arguments: 1精确的表示是可配置的,并且取决于构建类型(调试/发布)。
https://stackoverflow.com/questions/17741163
复制相似问题