syslog - 日志文件详解

本文介绍了Linux中用于日志记录的API接口,包括openlog、syslog和closelog的功能及参数说明,并详细解释了如何清空syslog日志文件的正确方法。

日志文件,是linux最为重要的记录文件,记录着日常的操作。
我们在linux编程的时候,通常会使用日志文件记录操作和信息,日志系统提供了我们几个API接口供调用

1. API

void openlog(const char *ident, int option, int facility);  //关联日志文件
void syslog(int priority, const char *format, ...);         //写入信息
void closelog(void);                                        //关闭关联

参数

  • ident: 一般设置为程序名,如果为NULL, 则默认为本程序名;将该指向的程序输出的信息写入到syslog中
  • option:
optionDescription
LOG_CONS如果信息无法写入到syslog,那么直接打印到控制端
LOG_NDELAY立刻开启链接到syslog
LOG_NOWAIT不要等待可能建立的子进程
LOG_ODELAY与LOG_NDELAY相反
LOG_PERROR错误信息也打印到stderr
LOG_PID每次打印信息,都加上进程的ID号
  • facility: 程序以何种方式打印信息
facilityDescription
LOG_AUTHsecurity/authorization messages
LOG_AUTHPRIVsecurity/authorization messages (private)
LOG_CRONclock daemon (cron and at)
LOG_DAEMONsystem daemons without separate facility value
LOG_FTPftp daemon
LOG_KERNkernel messages (these can't be generated from user processes)
LOG_LPRline printer subsystem
LOG_MAILmail subsystem
LOG_NEWSUSENET news subsystem
LOG_SYSLOGmessages generated internally by syslogd(8)
LOG_USER (default)generic user-level messages
LOG_UUCPUUCP subsystem
  • priority: 信息的重要程度,为 facility | level(按位或),level的值如下:
levelDescription
LOG_EMERGsystem is unusable
LOG_ALERTaction must be taken immediately
LOG_CRITcritical conditions
LOG_ERRerror conditions
LOG_WARNINGwarning conditions
LOG_NOTICEnormal, but significant, condition
LOG_INFOinformational message
LOG_DEBUGdebug-level message

2. 清空/误删syslog

有的时候,我们需要清空syslog的所有信息,以便我们使用它调试我们的项目。
但是,新手往往不知道如何清空syslog这个日志文件:

  • 正确方式:
cat /dev/null > /etc/init.d/syslog
  • 错误方式:
    1. 直接 rm -f /etc/init.d/syslog
    1. vim /etc/init.d/syslog,然后删除所有内容

解决办法:

  • 错误1后,千万不能自己touch一个syslog出来,这样根本写不进去的;
  • 错误2后,一定记得也把这个syslog文件删除
  • 重启syslogd这个守候进程: /etc/init.d/rsyslog restart (ubuntu为例)
  • syslog会自动生成

当然网上也有其它说法,但我的ubuntu是采用以上方式完成重建的,试了其它的博客说的方法都是无效的。

对了,我的ubuntu的版本是:

root@jimmy-vm:~# uname -a
Linux jimmy-vm 4.4.0-119-generic #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@jimmy-vm:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04 LTS
Release:        16.04
Codename:       xenial
root@jimmy-vm:~# cat /etc/issue
Ubuntu 16.04 LTS \n \l

转载于:https://www.cnblogs.com/Jimmy1988/p/8892483.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值