linux多进程的日志记录实现,Linux守护进程的日志实现
【syslogd守护进程】
由于守护进程没有控制终端进行信息的输出,而有些情况还需要根据进程提供的信息进行系统管理和维护工作。因此Linux提供了syslogd守护进程,专门用于接受其他守护进程提供的信息记录在指定位置来解决日志记录的问题。
1.syslogd守护进程
负责记录、发送系统或者工具产生的信息,根据配置文件信息对消息的去向做出处理(记录到日志、输出到控制台、转发给用户、转发到网络上其他主机的syslogd进程处理)。
2.syslogd守护进程配置文件
配置文件/etc/syslog.conf内容如下:
gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ cd /etc
gaolu@gaolu-desktop:/etc$ ls -l syslog.conf
-rw-r--r-- 1 root root 1626 2008-08-30 08:40 syslog.conf
gaolu@gaolu-desktop:/etc$ cat syslog.conf
# /etc/syslog.conf Configuration file for syslogd.
#
# For more information see syslog.conf(5)
# manpage.
#
# First some standard logfiles. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log //下面示例程序log信息追加的文件
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail.info
mail.warning -/var/log/mail.warn
mail.err /var/log/mail.err
# Logging for INN news system
#
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
#
# Some `catch-all' logfiles.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warning;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg *
#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
# news.=crit;news.=err;news.=notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warning /dev/tty8
# The named pipe /dev/xconsole is for the `xconsole' utility. To use it,
# you must invoke `xconsole' with the `-file' option:
#
# $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
# busy site..
#
daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warning |/dev/xconsole
说明(具体参数取值略):
以user.* -/var/log/user.log为例:
(1)消息类型:格式为facility.level,user.*表示facility为user(用户日志信息,对应函数参数为LOG_USER),level为*表示所有优先级的消息
(2)处理方案:将日志信息记录在-/var/log/user.log文件中
【守护进程日志实现】
主要涉及三个函数:
1)void openlog(const char* ident, int option, int facility);
打开系统日志链接,必须步骤。
ident:信息来源,哪个可执行程序
option:控制标志的参数,多个可以同时使用,用|操作合并
facility:指定消息类型,与配置文件对应,日志会写入配置文件指定位置。
2)void syslog(int priority,const char* format,....);
priority:消息级别,与openlog中的facility可以共同决定日志写入位置。
format:消息格式,再后面为格式对应的参数,类似printf的使用
3)void closelog();
关闭系统日志链接,可选步骤。
【代码】
工作流程:
|-------------------------------------------|
|openlog()------>syslog()------>colselog() |
|-------------------------------------------|
#include
#include
int main(int argc,char* argv[])
{
int i=0;
openlog(argv[0],LOG_CONS|LOG_PID,LOG_USER);
while(i<=5)
{
syslog(LOG_INFO,"%d log info test....",i); //增加6条log信息
i++;
}
closelog();
return 0;
}
【执行结果】
gaolu@gaolu-desktop:~$ gcc -o syslog.o syslog.c
gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ ./syslog.o
gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ cd /var/log
gaolu@gaolu-desktop:/var/log$ cat user.log //查看对应日志文件增加内容
Mar 10 23:55:45 gaolu-desktop Cleanup, done. Exitting...
Mar 11 21:40:50 gaolu-desktop pulseaudio[5136]: ltdl-bind-now.c: Failed to find original dlopen loader.
Mar 11 21:40:50 gaolu-desktop pulseaudio[5139]: alsa-util.c: Device front:0 doesn't support 44100 Hz, changed to 44099 Hz.
Mar 11 21:41:38 gaolu-desktop pulseaudio[5139]: module-x11-xsmp.c: X11 session manager not running.
Mar 11 21:41:38 gaolu-desktop pulseaudio[5139]: module.c: Failed to load module "module-x11-xsmp" (argument: ""): initialization failed.
...............................//略去中间内容
Mar 15 18:57:30 gaolu-desktop pulseaudio[5125]: alsa-util.c: Device front:0 doesn't support 44100 Hz, changed to 44099 Hz.
Mar 15 18:57:59 gaolu-desktop pulseaudio[5125]: module-x11-xsmp.c: X11 session manager not running.
Mar 15 18:57:59 gaolu-desktop pulseaudio[5125]: module.c: Failed to load module "module-x11-xsmp" (argument: ""): initialization failed.
Mar 15 19:00:08 gaolu-desktop python: io/hpmud/pp.c 627: unable to read device-id ret=-1
Mar 15 19:00:12 gaolu-desktop hp: io/hpmud/pp.c 627: unable to read device-id ret=-1
Mar 15 20:53:41 gaolu-desktop ./syslog.o[7429]: 0 log info test....
Mar 15 20:53:41 gaolu-desktop ./syslog.o[7429]: 1 log info test....
Mar 15 20:53:41 gaolu-desktop ./syslog.o[7429]: 2 log info test....
Mar 15 20:53:41 gaolu-desktop ./syslog.o[7429]: 3 log info test....
Mar 15 20:53:41 gaolu-desktop ./syslog.o[7429]: 4 log info test....
Mar 15 20:53:41 gaolu-desktop ./syslog.o[7429]: 5 log info test....
gaolu@gaolu-desktop:/var/log$
gaolu@gaolu-desktop:/var/log$
linux多进程的日志记录实现,Linux守护进程的日志实现相关推荐
- linux启用日志记录功能,Linux下启用Open vSwitch的日志功能以便调试和排障
问题 我试着为我的Open vSwitch部署排障,鉴于此,我想要检查它的由内建日志机制生成的调试信息.我怎样才能启用Open vSwitch的日志功能,并且修改它的日志等级(如,修改成INFO/DE ...
- Linux系统编程---11(会话,守护进程,创建守护进程)
会话 创建会话 创建一个会话需要注意以下6点注意事项 调用进程不能是进程组组长,该进程变成新会话首进程 该进程成为一个新进程组的组长进程 需要root权限(nbuntu不需要) 新会话丢弃原有的控制终 ...
- Linux C语言 创建一个简单的守护进程
一.什么是守护进程? 首先我们先来简单了解一下什么是守护进程,守护进程在Linux中说白了就是一个后台进程,在后台默默服务,不受终端(会话)控制,生命周期长,在系统引导装入时启动,在系 ...
- Linux学习之系统编程篇:守护进程(精灵进程、后台进程)
一.背景 一般情况下,启动终端(shell),系统会创建一个会话(shell 进程是会长),经过后续各种操作,该会话中会存在多个进程组,每个进程组中也会有多个进程(父进程是组长),若此时关闭 shel ...
- linux下为.net core应用创建守护进程
1.Supervisor 安装 yum install python-setuptools easy_install supervisor 2.配置 Supervisor mkdir /etc/sup ...
- linux的sssd服务,系统安全服务守护进程SSSD
SSSD是自红帽企业版Linux6起新加入的一个守护进程,该进程可以用来访问多种验证服务器,如LDAP,Kerberos等,并提供授权.SSSD是 介于本地用户和数据存储之间的进程,本地客户端首先连接 ...
- 【日志记录】基于AOP实现自定义日志注解,并支持动态设置注解内容
前言 平时在java项目开发过程中,涉及到记录操作日志的场景很多,有时候大家习惯把操作日志的生成代码写到业务代码中,这样造成了日志和业务代码的耦合性比较高.可维护性也不强,易读性更差,更多的时候是使用 ...
- easylogging++的那些事(四)源码分析(二)日志记录宏(一)CLOG宏(三)日志输出
日志输出 Writer 析构函数 Writer::processDispatch 接口 Writer::triggerDispatch 接口 base::LogDispatcher::dispatch ...
- linux日志记录分析,linux日志朔源分析记录
lastlog 记录用户最后一次登录情况 只有root最近登录过 lastlog -u 用户名或者uid uid 直接在passwd文件中的低三位可以看到 lastb 记录用户用户登录失败的用户记录, ...
最新文章
- php设置背景图片的代码,css设置背景图片如何实现?(代码实例)
- 字符串、数组、集合在使用时出现空指针怎么办?_03
- python专业方向 | 文本相似度计算
- 数据湖生态联盟正式成立
- java修改注册表_Java的Windows安装程序对注册表的修改
- 新版中日交流标准日本语多媒体版(全25CD)下载
- 【axure教程】产品流程图的制作方法详解
- 【ARM 】CMSIS
- Flink学习笔记之DataStream API 简介
- 分享五个最好的BT下载软件
- Web 前端学习之表单制作、网页超链接
- 设计模式的艺术 行为型模式之观察者模式
- BUUCTF--[0CTF 2016]piapiapia
- 微信小程序最新获取头像以及昵称方法
- Python网络爬虫(七):百度文库文章爬取器
- Object类型转换为Integer:
- 12弦原声大吉他音源 Orange Tree Samples Evolution Jumbo 12 Kontakt
- ArcGIS中地表径流
- Vjudge B - Grandpa is Famous
- 连接ipv6服务器未响应,IPv6过渡技术未响应