日志配置

Posted shenxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志配置相关的知识,希望对你有一定的参考价值。

日志配置

	程序包:rsyslog
		rpm -ql rsyslog
			centos6
				/etc/logrotate.d/syslog
				/etc/pki/rsyslog
				/etc/rc.d/init.d/rsyslog
				/etc/rsyslog.conf
				/etc/rsyslog.d
				/etc/sysconfig/rsyslog
				/lib64/rsyslog
				/sbin/rsyslogd/
				/usr/share/doc/rsyslog-5.8.10
				/usr/share/man/man5/rsyslog.conf.5.gz
				/usr/share/man/man8/rsyslogd.8.gz
				/var/lib/rsyslog
			centos7
				/etc/logrotate.d/syslog
				/etc/pki/rsyslog
				/etc/rsyslog.conf
				/etc/rsyslog.d
				/etc/sysconfig/rsyslog
				/usr/bin/rsyslog-recover-qi.pl
				/usr/lib/systemd/system/rsyslog.service
				/usr/lib64/rsyslog/
				/usr/sbin/rsyslogd
				/usr/share/doc/rsyslog-7.4.7
				/usr/share/man/man5/rsyslog.conf.5.gz
				/usr/share/man/man8/rsyslogd.8.gz
				/var/lib/rsyslog
	主程序:
		rsyslogd

	配置文件:
		/etc/rsyslog.conf 
		/etc/rsyslog.d/*.conf

	库文件: 
		/lib64/rsyslog/*.so

	配置文件的格式:
		1》由三部分组成
			MODULES:	相关模块配置
			GLOBAL DIRECTIVES:	全局配置
			RULES:	日志记录相关的规则配置
		2》规则rules的配置格式:
			facility.priority;facility.priority        target
			设施 . 级别                                  位置
		3》facility:
			*:	所有的facility
			facility1,facility2,.... :	指定的facility列表
		4》priority:
			*:	所有级别的日志信息
			none:	没有级别,即不记录
			priority_name:	(8中级别之一)指定级别(含)以上的所有级别的日志信息
			=priority_name:	(8中级别之一)仅记录指定级别的日志信息
		5》facility和priority中间可以使用一些符号来表示特殊意义:
			.	点号表示比后面还要高的等级(含)都要被记录下来
			.=	表示所有需要的等级就是后面所接的等级,其他的不要
			.!	代表不等于后面多接的等级,即除了这个等级外的都将记录
		6》target:
			日志信息发送的位置。
			1)文件路径:通常在/var/log/ ,文件路径前的 - 表示异步写入。
			2)用户:将日志事件通知给指定的用户,* 表示登录的所有用户。
			3)日志服务器:@server_host ,把日志送往至指定的远程服务器记录。注意,服务器必须要监听tcp或udp的514端口上的服务。其中@host表示使用udp的协议,@@host表示使用tcp的协议。
			4)管道: | COMMAND,转发给其他命令处理。

	配置日志服务器
		1》把本地配置为日志服务器,可以打开配置文件/etc/rsyslog.conf中的指定模块,让其监听在514端口上。
			vim /etc/rsyslog.conf
					#### MODULES ####
				 12 # Provides UDP syslog reception
				 13 $ModLoad imudp
				 14 $UDPServerRun 514
				 15 
				 16 # Provides TCP syslog reception
				 17 $ModLoad imtcp
				 18 $InputTCPServerRun 514
		2》打开后重启rsyslog服务器生效
			service rsyslog restart
			ss -ntul|grep 514
		3》在应用服务器
			vim /etc/rsyslog.conf
				local2.*                @@192.168.25.107
		
	日志切割存储的功能组件:logrotate
		1》介绍
			logrotate  程序是一个日志文件管理工具,用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。
			可以根据日志文件的大小,也可以根据其天数来转储。
			logrotate是结合cron定期的对日志文件进行处理,主要是通过/etc/cron.daily/logrotate程序来处理。
		2》logrotate的配置文件:
			/etc/logrotate.conf
			/etc/logrotate.d/
		3》/etc/logrotate.conf配置主要参数说明
			compress  	通过gzip 压缩转储以后的日志
			nocompress  	不需要压缩时,用这个参数
			copytruncate  	用于还在打开中的日志文件,把当前日志备份并截断
			nocopytruncate  	备份日志文件但是不截断
			create mode owner group  	转储文件,使用指定的文件模式创建新的日志文件
			nocreate  	不建立新的日志文件
			delaycompress 和 compress  	一起使用时,转储的日志文件到下一次转储时才压缩
			nodelaycompress 	覆盖 delaycompress  选项,转储并压缩
			errors address  	专储时的错误信息发送到指定的Email 地址
			ifempty  	即使是空文件也转储,是缺省选项。
			notifempty  	如果是空文件的话,不转储
			mail address  	把转储的日志文件发送到指定的E-mail  地址
			nomail  	转储时不发送日志文件
			olddir directory  	转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
			noolddir  	转储后的日志文件和当前日志文件放在同一个目录下
			prerotate/endscript  	在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
			postrotate/endscript  	在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
			daily  	指定转储周期为每天
			weekly  	指定转储周期为每周
			monthly  	指定转储周期为每月
			size 	指定日志超过多大时,就执行日志转储
			rotate count  	指定日志文件删除之前转储的次数,0  指没有备份,5  指保留5  个备份
			Missingok  	如果日志不存在,提示错误
			Nomissingok   	如果日志不存在,继续下一次日志,不提示错误
			weekly  	默认每周对登录文件进行一次切割
			rotate 4   	保留多少个登录文件,默认为4个
			create	由于登录文件被更名,因此创建一个新的来继续记录
			dateext	
			#compress	被更动的登录文件是否需要压缩
			include /etc/logrotate.d	将这个目录的所有文件都读取进来
			/var/log/wtmp {  仅针对/var/log/wtmp所配置的参数
				    monthly	每个月移除,取代每周
				    create 0664 root utmp	指定新建文件的权限与所属账号、群组
				    minsize 1M	文件容量超过1M后才进行切割
				    rotate 1	仅保留一个,即仅有wtmp.1保留而已
			}
			
			/var/log/btmp {
			    missingok
			    monthly
			    create 0600 root utmp
			    rotate 1
			}
			
	rsyslog将日志记录于mysql中
		1》准备MySQL Server
		2》在mysql server 上授权rsyslog 能连接至当前服务器
			mysql> GRANT ALL ON Syslog.* TO \'loguser\'@\'%\' IDENTIFIED BY \'xm1234\';
		3》在rsyslog 服务器和mysql server上安装mysql 模块相关的程序包
			yum install rsyslog-mysql
		4》为rsyslog 创建数据库及表;
			mysql -uroot  -pxm1234 < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
		5》配置rsyslog 将日志保存到mysql中
			vim /etc/rsyslog.conf 
				#### MODULES ####
				$ModLoad ommysql
				#### RULES ####
				facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
				示例
					local2.*        :ommysql:192.168.213.128,Syslog,loguser,xm1234
			systemctl status rsyslog.service
			systemctl restart  rsyslog.service 
		6》测试
			在rsyslog服务器上
				logger -p local2.info "haha"
			在mysql服务器上
				mysql -uroot -pxm1234
					use Syslog ;
					show tables;
					select count(*) from SystemEvents;
					select * from SystemEvents \\G;

	通过loganalyzer 展示数据库中的日志
		1》在rsyslog 服务器上准备lamp 或lnmp 组合
			yum install httpd php php-mysql php-gd
		2》安装LogAnalyzer
			tar xf loganalyzer-4.1.5.tar.gz
			cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzer
			cd /var/www/html/loganalyzer
			touch config.php
			chmod 666 config.php
		3》配置loganalyzer
			systemctl start httpd.service
			http://HOST/loganalyzer
			
		4》安全加强
			cd /var/www/html/loganalyzer
			chmod 644 config.php

以上是关于日志配置的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

webstorm代码片段的创建

如何去掉控制台上输出的这些日志