• 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:
    option Description
    LOG_CONS 如果信息无法写入到syslog,那么直接打印到控制端
    LOG_NDELAY 立刻开启链接到syslog
    LOG_NOWAIT 不要等待可能建立的子进程
    LOG_ODELAY 与LOG_NDELAY相反
    LOG_PERROR 错误信息也打印到stderr
    LOG_PID 每次打印信息,都加上进程的ID号
    • facility: 程序以何种方式打印信息
    facility Description
    LOG_AUTH security/authorization messages
    LOG_AUTHPRIV security/authorization messages (private)
    LOG_CRON clock daemon (cron and at)
    LOG_DAEMON system daemons without separate facility value
    LOG_FTP ftp daemon
    LOG_KERN kernel messages (these can't be generated from user processes)
    LOG_LPR line printer subsystem
    LOG_MAIL mail subsystem
    LOG_NEWS USENET news subsystem
    LOG_SYSLOG messages generated internally by syslogd(8)
    LOG_USER (default) generic user-level messages
    LOG_UUCP UUCP subsystem
    • priority: 信息的重要程度,为 facility | level(按位或),level的值如下:
    level Description
    LOG_EMERG system is unusable
    LOG_ALERT action must be taken immediately
    LOG_CRIT critical conditions
    LOG_ERR error conditions
    LOG_WARNING warning conditions
    LOG_NOTICE normal, but significant, condition
    LOG_INFO informational message
    LOG_DEBUG debug-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 
     l
    
  • 相关阅读:
    js-20170816-Date对象
    js-20170804-Math对象
    js-20170619-string对象
    微信web开发者工具
    前端开发指南
    接口调试工具DHC
    CSS预处理器
    Weex
    Vue.js
    hbuilder
  • 原文地址:https://www.cnblogs.com/Jimmy1988/p/8892483.html
Copyright © 2020-2023  润新知