几乎所有的网络设备都可以通过syslog协议,将日志信息以UDP的形式传送给远端服务器,远端接收日志服务器必须通过syslogd监听UDP端口514,并根据 syslog.conf 配置文件张的配置处理。配置文件 /etc/rsyslog.conf 中规定了syslogd如何根据设备和信息的重要级别来报告信息。

CentOS6.5之前,配置文件为/etc/syslog.conf,从CentOS6.5之后,配置文件名变更为/etc/rsyslog.conf 。

syslog支持日志分类输出到特定文件中,但是有几个限制:

1、syslog日志输出支持分类,但不支持每个进程单独输出到某个文件(因为syslog并不是作为一套完整的日志库而产生的);

2、syslog输出的日志文件位置并不是任意的,默认仅仅限于【/var/log/】目录下,如果指定到其他位置,视为无效;

配置文件的格式:

【服务.优先级 <tab> action字段】。

其中,【服务.优先级】一起统称为选择条件。条件选择是对服务进行了分类,便于syslog对日志的输出管理。同时一行的配置中,允许出现多个选择条件,多个选择条件使用 ; 隔开。

服务(facility),用来指定syslog的功能,主要包括:

 kern        内核信息,首先通过 klogd 传递;
user 用户进程;
mail 邮件;
daemon 后台进程;
authpriv 授权信息;
syslog 系统日志;
lpr 打印信息;
news 新闻组信息;
uucp 由uucp生成的信息
cron 计划和任务信息。
mark syslog 内部功能用于生成时间戳
local0---local7 与自定义程序使用,例如使用 local5 做为 ssh 功能
* 通配符代表除了 mark 以外的所有功能

优先级(level),指定了syslog的优先级,从高到底依次为:

 emerg 或 panic  该系统不可用(最紧急消息)
alert 需要立即被修改的条件(紧急消息)
crit 阻止某些工具或子系统功能实现的错误条件(重要消息)
err 阻止工具或某些子系统部分功能实现的错误条件(出错消息)
warning 预警信息(警告消息)
notice 具有重要性的普通条件(普通但重要的消息)
info 提供信息的消息(通知性消息)
debug 不包含函数条件或问题的其他信息(调试级-信息量最多)
none 没有重要级,通常用于排错(不记录任何日志消息)
* 所有级别,除了none

action:

 /var/log/lastlog : 记录登录系统的用户上次登录系统的时间. 可用/usr/bin/lastlog 指令读取.
/var/run/utmp : 记录每个用户登录系统的时间, who, users, finger 等指令会查这个档案.
/var/log/wtmp : 记录每个用户登录及登出的时间, 用last命令查看. 也记录 shutdown 及 reboot 的动作.
/var/log/secure : 登录系统的信息
/var/log/maillog : 记录 sendmail 及 pop 等相关信息.
/var/log/cron : 记录 crontab 的相关信息 ,定时器的信息
/var/log/dmesg : /bin/dmesg 会将这个档案显示出来, 它是开机时的画面信息.
/var/log/xferlog : 记录那些位址来 ftp 拿取那些档案.
/var/log/messages : 系统大部份的信息皆记录在此, 包括 login, check password , failed login, ftp, su 等.
/var/log/xferlog的各个字段解析
Thu Dec 1 17:40:46 2016 8 10.11.40.147 32035942 /home/chb/1.txt b _ o r dxpanalysis ftp 0 * c
字段 含义
Thu Dec 1 17:40:46 2016 日期和时间
8 下载文件所花费的秒数
10.11.40.147 远程系统
320359 文件大小
/home/chb/1.txt 本地路径名
b 传输类型(a:ASCII,b:二进制)
_ 与压缩相关的标志或tar,或”_”(如果没有压缩的话)
o 传输方向(相对于服务器而言:i代表进,o代表出)
r 访问模式(a:匿名,g:输入口令,r:真实用户)
dxpanalysis 用户名
ftp 服务名(通常是ftp)
0 认证方法(l:RFC931,或 0)
* 认证用户的ID或”“, 为未获取到
c 传输状态; c表示传输完成

调用syslog的守护进程:

syslog也是一个守护进程,准确的说应该是rsyslog,位于/etc/rc.d/init.d/rsyslog,这是syslog的启动脚本。当我们修改了启动交而不能文件中的内容之后,需要使用【service rsyslog restart】命令重启该服务。

syslog不仅仅用来记录本机文件的日志信息,更多的是作为一个日志服务器,用来接收远程系统的信息。对该服务的启动,有两个常用选项:

-r:将当前主机作为日志服务器,监听514端口上进来的UDP包,接收远程系统的信息。没有该选项,将不会接收来自远程系统的信息。

-h:使得当前日志服务器能够传送日志信息,


如何配置一个中央日志服务器:

1、编辑/etc/sysconfig/rsyslog(CentOS6.5之前的版本该文件叫做syslog),该文件中可以声明,启动该服务的时的启动选项。

-r:上面提到过,表示允许接收外来日志消息;

-m **:将默认的时间戳标记信息出现频率变为自己指定的值【eg: -m240,表示每240分钟在日志文件中增加一行时间戳消息】;

-x:表示不希望让中央日志服务器解析其他机器的FQDN(完全合格域名,指的是主机名+全路径);

SYSLOGD_OPTIONS="-r -x -m 240 -c 5"

2、重启rsyslog服务

service rsyslog restart

3、关闭防火墙(iptables),允许514号端口上的连接通过;

4、对客户机进行配置syslog

方法一:在客户机上syslog的配置文件中,对有关配置行的操作动作部分用“@”字符指向中央日志服务器,而不用指向本机的 /var/log/.....

# Log all the mail messages in one place.

mail.*     @192.168.3.24

方法二:在DNS中定义一个机器,命名随意,这里以“loghost”为例,然后将客户机的配置文件改为如下形式。这样就可以避免以后如果发生日志服务器更换的情况,不用再一个一个修改客户机的syslog配置文件。

# Log all the mail messages in one place.

mail.*     @loghost

对客户机配置完毕之后,以及需要进行重启。


syslog的函数接口:

#include <syslog.h>
void openlog(const char *ident, int option, int facil- ity);
# ident:对哪个进程进行日志记录,为进程名
# option常用选项:
LOG_CONS:
LOG_PID:打印的每一条日志信息包含当前进程的PID
# facil-ity常用选项:
LOG_USER:打印的每一条日志信息包含当前用户的等级信息
void syslog(int priority, const char *format, ...);
# format:输出日志信息的参数列表,用法类同printf
void closelog(void);

测试用例:

#include <stdio.h>
#include <syslog.h>
int main(int argc,char* argv[])
{
openlog(argv[],LOG_CONS | LOG_PID, LOG_USER);
int count = ;
while(count < )
{
syslog(LOG_INFO, "%d, log info test ...", count);
count++;
}
closelog();
return ;
}

为了同时测试配置文件,在syslog的配置文件中添加一行内容如下:

user.*     /var/log/0.1     # 该文件默认只能在/var/log下,放在其它目录下无效

重启rsyslog服务;

执行原程序,就可以在/var/log/看到0.log文件,打开文件,内容如下:

[root@www ~]# cat /var/log/0.log

Apr   :: www ./test_log[]: , log info test ...

Apr   :: www ./test_log[]: , log info test ...

Apr   :: www ./test_log[]: , log info test ...

简单的例子看到这里就够了,我看到网上很多人都在讨论如何使用syslog针对特定的某一进程输出日志文件,但都没有很好的解决方案。尽管在配置文件中提供了local0~local7自定义服务,但也并不是万能的,很多情况下并不能真正实现我们的目的。

这里我想说的是,Linux下的syslog,它出现的目的并不是为了提供用户每个进程的日志输出,syslog只是用来作为对于服务管理的整套机制,它针对的是一类服务,用来做日志服务器,实现对整个系统网络中日志的维护(对日志的维护,实际上就是对整个计算机群的维护)。同时,真正的工程中,并不会使用syslog作为全套的日志管理工具,在Linux下有提供了很多完整的日志库工具,比如log4cplus、zlog等。

linux日志守护进程 syslog的更多相关文章

  1. 六十一、linux 编程—— 守护进程

    61.1 介绍 守护进程(daemon)是生存期长的一种进程.它们常常在系统引导装入时启动,在系统关闭时终止 守护进程也称为后台进程 所有守护进程都以超级用户(用户 ID 为0)的优先权运行. 守护进 ...

  2. linux C守护进程编写

    linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件.守护进程是一种很有用的进程. Linux的大多数服 ...

  3. 【Linux】- 守护进程的启动方法

    转自:Linux 守护进程的启动方法 Linux中"守护进程"(daemon)就是一直在后台运行的进程(daemon). 本文介绍如何将一个 Web 应用,启动为守护进程. 一.问 ...

  4. python实现Linux启动守护进程

    python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...

  5. linux 创建守护进程的相关知识

    linux 创建守护进程的相关知识 http://www.114390.com/article/46410.htm linux 创建守护进程的相关知识,这篇文章主要介绍了linux 创建守护进程的相关 ...

  6. asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)

    原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二) 续上一篇文章:asp.net core2.0 部署centos7/linux系统 -- ...

  7. 深入理解Linux操作系统守护进程的意义

    Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程 ...

  8. linux创建守护进程

    守护进程deamon 是一个后台进程,无需用户输入就能运行,用来在系统后台提供某种服务. 常见的守护进程有Wbe服务器.邮件服务器以及数据库服务器等等.守护进程不能控制终端,所以任何的输入和输出都需要 ...

  9. Linux Supervisor 守护进程基本配置

    supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...

随机推荐

  1. hdu-1025 Constructing Roads In JGShining's Kingdom(二分查找)

    题目链接: Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)     Memory Li ...

  2. Java 关于创建String对象过程的内存分配

    一.String s = "abc"  和 String s = new String("abc") 的区别 1.String s = "abc&qu ...

  3. Android中高效的显示图片之三——缓存图片

    加载一张图片到UI相对比较简单,如果一次要加载一组图片,就会变得麻烦很多.像ListView,GridView,ViewPager等控件,需要显示的图片和将要显示的图片数量可能会很大. 为了减少内存使 ...

  4. [原]NYOJ-房间安排168

    大学生程序代写 /*房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至1 ...

  5. LOJ2722 「NOI2018」情报中心

    「NOI2018」情报中心 题目描述 C 国和D 国近年来战火纷飞. 最近,C 国成功地渗透进入了D 国的一个城市.这个城市可以抽象成一张有$n$ 个节点,节点之间由$n - 1$ 条双向的边连接的无 ...

  6. Linux 下网卡参数配置

    目录 Linux 下网卡参数配置 第一种:修改 interfaces 文件 网卡配置实例 回环参数配置 DHCP方式配置 静态 IP 地址分配 无线网卡配置 March 17, 2015 7:48 P ...

  7. BZOJ1636&&1699:[USACO2007JAN]Balanced Lineup

    浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...

  8. HDOJ1728(限制转弯的迷宫问题)

    用bfs进行深搜,求出每个可达点的最小转弯数 #include<cstdio> #include<cstring> #include<queue> using na ...

  9. 杂项-JS:artTemplate.js

    ylbtech-杂项-JS:artTemplate.js artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎 ...

  10. 学习Web前端的好网站推荐

    说明:将其他技术技术网址也搜藏到下面,与君共同进步 1.Jquery专题 http://kb.cnblogs.com/zt/jquery/ 2.Entity Framwork专题 http://kb. ...