zl程序教程

您现在的位置是:首页 >  系统

当前栏目

linux系统日志文件查看方法_linux系统日志保存期限

Linux文件方法 查看 保存 系统日志 期限
2023-06-13 09:13:01 时间

大家好,又见面了,我是你们的朋友全栈君。

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

1. syslog函数

用户进程可以通过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

2. openlog、closelog

可以使用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 */

3. demo

/* 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