syslog的使用
2021/9/14 6:08:14
本文主要是介绍syslog的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 1. syslog的配置
- 1.1. syslog简介
- 1.1.1. linux中日志的类型
- 1.1.2. facility
- 1.1.3. action(动作)
- 1.1.4. 日志定义格式举例
- 1.1.5. 重启rsyslog服务
- 1.2. syslog服务器
- 1.3. logrotate:系统中进行日志滚动(切割)的工具
- 1.4. rsyslog的配置文件
- 1.5. 举例说明
- 1.5.1. 添加配置文件
- 1.5.2. 重启rsyslog
- 1.1. syslog简介
- 2. syslog在shell脚本中的应用
- 3. syslog在C/C++中的应用
1. syslog的配置
1.1. syslog简介
syslog.conf是syslogd进程的配置文件,将在程序启动时读取,默认位置是/etc/syslog.conf.这个配置文件中的空白行和以"#"开头的行将被忽略."facility.level"部分也被称为选择符(seletor). seletor和action之间使用一个或多个空白分隔.它指定了一系列日志记录规则.规则的格式如下:
seletor(facility.level) action
选择符(seletor)(选择符由 facility 和 level 两部分组成,之间用一个句点(.)连接)
完善的日志分析系统应该能够通过多种协议(包括syslog等)进行日志采集并对日志分析,因此日志分析系统首先需要实现对多种日志协议的解析。其次,需要对收集到的海量日志信息进行分析,再利用数据挖掘技术,发现隐藏再日志里面的安全问题。
Syslog再UNIX系统中应用非常广泛,它是一种标准协议,负责记录系统事件的一个后台程序,记录内容包括核心、系统程序的运行情况及所发生的事件。Syslog协议使用UDP作为传输协议,通过514端口通信,Syslog使用syslogd后台进程,syslogd启动时读取配置文件/etc/syslog.conf,它将网络设备的日志发送到安装了syslog软件系统的日志服务器,Syslog日志服务器自动接收日志数据并写到指定的日志文件中。
1.1.1. linux中日志的类型
(1)info:基本的信息
(2)notice:比info更需注意的信息
(3)warning:警告,提示管理员,但是不会影响系统的进程
(4)error:错误,一些比较重要的错误信息。例如、某些服务无法启动
(5)crit:比error要严重的一些错误
(6)alert:出现这个错误,管理员就要注意啦!有可能就会影响到系统
(7)panic:出现这个错误,系统就死机啦!什么也做不了了
1.1.2. facility
可以理解为日志的来源或设备,目前常用的facility有以下几种:
auth #认证相关的 authpriv #权限,授权相关的 cron #任务计划相关的 daemon #守护进程相关 kern #内核相关的 lpr #打印相关的 mail #邮件相关的 mark #标记相关的 news #新闻相关的 security #安全相关的,与auth类似 syslog #syslog自己的 user #用户相关的 uucp #unix to unix cp相关的 local0 到 local7 #用户自定义使用 * #表示所有的facility
1.1.3. action(动作)
日志记录的位置
系统上的绝对路径 #普通文件,如:/var/log/xxx | #管道,通过管道送给其它命令处理 终端 #终端,如:/dev/console @HOST #远程主机,如:@10.0.0.1 用户 #系统用户,如:root * #登录到系统上的所有用户,一般为emerg级别的日志是这样定义的
1.1.4. 日志定义格式举例
mail.info /var/log/mail.log #表示将mail相关的,级别为info及info以上级别的信息记录到/var/log/mail.log文件中 auth.=info @10.0.0.1 #表示将auth有关的,级别为info的信息记录到10.0.0.1主机上去 #前提是10.0.0.1要能够接受其它主机发来的日志信息 user.!error #与user.error相反 *.info #表示记录所有的日志信息的info级别 mail.* #表示记录mail相关的所有级别的信息 *.* #记录所有的日志信息的所有级别 cron.info;mail.info #多个日志来源用";"隔开 cron,mail.info #与cron.info;mail.info意义相同 mail.*;mail.!=info #表示记录mail相关的除了info级别之外的所有级别的信息
1.1.5. 重启rsyslog服务
systemctl restart rsyslog
1.2. syslog服务器
1.3. logrotate:系统中进行日志滚动(切割)的工具
https://zhuanlan.zhihu.com/p/90507023
1.4. rsyslog的配置文件
/etc/rsyslog.d/50-default.conf
# Default rules for rsyslog. # # For more information see rsyslog.conf(5) and /etc/rsyslog.conf # # First some standard log files. 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
1.5. 举例说明
1.5.1. 添加配置文件
# cat /etc/rsyslog.d/30-user.conf local0.* /var/log/logger.log
1.5.2. 重启rsyslog
Systemctl restart rsyslog
2. syslog在shell脚本中的应用
#!/bin/bash echo "***********************************************" echo "**** -i,记录进程id" logger -i "this is a test --i" logger "this is a test --" <<! Jul 12 09:14:32 10-23-97-171 ubuntu[68209]: this is a test --i Jul 12 09:14:32 10-23-97-171 ubuntu: this is a test -- ! echo -e "\n\n" echo "***********************************************" echo "**** -s,输出标准错误,并且将信息打印到系统日志中" logger -i -s "abc" echo -e "\n\n" echo "***********************************************" echo "**** -t,指定标记记录,在message日志中可以看到是属于哪个模块记录的日志,-t后面为模块名称,加引号或不加都可以。如果不指定-t,都是已root为记录。" logger -i -t xuxin -s "this is a test" logger -i -t "xuxin" -s "this is a test" logger -i -s "this a test" <<! Jul 12 09:15:41 10-23-97-171 xuxin[68263]: this is a test Jul 12 09:15:41 10-23-97-171 xuxin[68264]: this is a test Jul 12 09:15:41 10-23-97-171 ubuntu[68265]: this a test ! echo -e "\n\n" echo "***********************************************" echo "**** -p,指定输入消息日志级别,优先级可以是数字或者指定为 facility.level的格式。比如:-p local3.info local3 这个设备的消息级别为 info。默认级别是 user.notice" logger -it xuxin -p local0.info "this a test"
3. syslog在C/C++中的应用
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <syslog.h> int work(long loop_count) { while(loop_count-- > 0) { syslog(LOG_INFO, "loglog"); } return 0; } int test(long process_count, long loop_count) { long i; pid_t pid; for (i = 0; i < process_count; i++) { pid = fork(); if (pid < 0) { printf("fork fail\n"); } else if(pid == 0) { work(loop_count); return 0; } } for (i = 0; i < process_count; i++) { pid = wait(NULL); } return 0; } int main(int argc, char** argv) { if (argc != 3) { fprintf(stderr, "test nprocess nloop"); exit(1); } openlog(NULL, LOG_NDELAY|LOG_NOWAIT|LOG_PID, LOG_LOCAL0); test(atol(argv[1]), atol(argv[2])); return 0; }
这篇关于syslog的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26JavaScript入门教程:从零开始学习JavaScript编程
- 2024-12-26JavaScript入门教程:从零开始学习JavaScript
- 2024-12-26JS编程入门指南:从零开始学习JavaScript
- 2024-12-25Java编程面试题详解与解答
- 2024-12-25TS基础知识详解:初学者必看教程
- 2024-12-252024面试题解析与攻略:从零开始的面试准备指南
- 2024-12-25数据结构与算法学习:新手入门教程
- 2024-12-25初学者必备:订单系统资料详解与实操教程
- 2024-12-24内网穿透资料入门教程
- 2024-12-24微服务资料入门指南