rsyslogd是linux系统提供的一个守护进程,用来处理系统日志。rsyslogd守护进程既能够接受用户进程输出的日志,也能够接受内核日志。
ispurs-virtual-machine:~$ ps aux | grep rsyslogd
syslog 6033 0.0 0.0 256588 3328 ? Ssl 2月18 0:00 /usr/sbin/rsyslogd -n
用户进程可以通过syslog函数将日志输出到一个UNIX本地域socket类型(AF_UNIX)的文件/dev/log中,rsyslog守护进程负责监听/dev/log文件,并将用户进程的日志保存到指定的日志文件当中。通常保存到/var/log目录下,输出路径可以通过/etc/rsyslog.d/目录下的配置文件进行配置。
#include <syslog.h>
void syslog(int priority, const char *message, ...);
/* priority表示日志级别,以下列出了其部分取值 */
#define LOG_INFO 6
#define LOG_DEBUG 7
#define LOG_ERR 3
可以使用openlog改变syslog的输出方式,closelog函数关闭日志功能。
void openlog(const char *ident, int option, int facility);
void closelog(void);
/* ident参数表示的字符串可以添加到日志消息的日期和时间之后 */
/* option可以对syslog调用的行为进行配置,它可以取以下值 */
#define LOG_PID 0x01 // 在日志消息中包含程序PID
/* facility用来修改syslog函数中的默认设施值,默认值为LOG_USER */
/* demo: rsyslog.cpp */
#include <syslog.h>
int main()
{
openlog("rsyslog.cpp", LOG_PID, LOG_USER);
syslog(LOG_INFO, "hello rsyslogd!");
closelog();
return 0;
}
最后得到的日志格式如下:
ispurs@ispurs-virtual-machine:/var/log$ sudo cat syslog
Feb 18 21:00:15 ispurs-virtual-machine rsyslog.cpp[7245]: hello rsyslogd!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170607.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有