标准syslog日志格式,syslog限制日志文件大小

  标准syslog日志格式,syslog限制日志文件大小

  http://blog..net/lzyzuixin/article/details/6915399

  http://blog.itpub.net/category/35701/55237

  一些基本概念:

  syslog的日志分为8个等级,从0到7。对于详细信息,man syslog就可以了。默认值为info。

  2)我们的系统日志在/var/log/下,比如messages,secure等。这里要说明的是,如果你做了什么事情,系统会将其写入相应的日志中。

  也就是说,如果要将日志信息写入其中,只能使用syslog系统功能。

  3)syslog日志系统提供远程写日志功能,即A机开通syslog服务和远程syslog功能,B机可以将自己的日志信息写入A机的日志系统。

  4)syslog为用户提供了定制操作程序来写日志的工具。

  特殊游戏:

  1)如何向syslog的日志系统写消息?

  您可以使用logger命令。syslog有八个日志级别,默认为info。此时,如果您将logger用作调试工具,syslog服务将不会写入日志。

  例如:

  cat /etc/syslog.conf

  *.信息;mail.noneauthpriv.nonecron.none/var/log/messages

  [root @ umail 180 etc]# logger-p debug“您好,这是一个测试”

  -p选项指定优先级,记录器的默认优先级是info。指定syslog可以接收信息或更高优先级。

  *.信息;mail.noneauthpriv.noneCron.none *此处表示所有设施,none表示没有收到相应的设施。

  2)如何将命令的执行结果写入syslog的日志系统?

  您可以使用initlog命令。例如:

  initlog -c cat /etc/passwd

  应该在-c选项后指定命令。

  cat /etc/passwd的结果将被写入/var/log/message。

  其中,initlog是在sysinit中调用的,它记录了整个sysinit脚本的引导过程,这样我们就可以在消息中看到它的引导信息。

  3)实现syslog的远程日志功能。

  服务器端:

  在此打开/etc/sysconfig/syslog文件

  更改SYSLOGD_OPTIONS=-m 0

  是SYSLOGD_OPTIONS=-m 0 -r

  只需重新启动系统日志服务。请注意,更改/etc/sysconfig/syslog和/etc/syslog将重新启动syslog服务,因为/etc/init.d/syslog脚本将在启动时加载这两个文件。

  是默认的udp端口514。

  netstat -anpgrep系统日志

  UDP 0 0 0 0 0 0 0:514 0 0 0 0 0:* 3425/syslogd

  客户:

  vi /etc/syslog.conf

  添加如下策略:

  *.info@umail180

  这里的*代表所有设施,也就是说,所有带有level info的日志写操作都会写到远程umail180服务器,其中umail180是主机名。

  有两点需要强调:

  第一,写本地syslog和写远程syslog是两回事,互不影响。

  例如:你有两个策略:

  *.信息/变量/日志/消息

  *.info@umail180

  它是一个写/var/log/messages和umail180的syslog。

  描述:系统首先接收recv请求,然后写入文件,然后调用fsync将内存同步到磁盘。最后,它调用sendto函数,并将其发送到umail180服务器的514端口。

  此时,服务器将接收请求,并将其写入syslog指定的设备文件中。

  其次,syslog的服务器在收到请求时会根据设施将信息写入相应的文件,有利于信息的收集和管理。

  例如:

  在另一台服务器上登录到此客户端。

  当然,此时本地syslog会收到请求,并根据syslog.conf文件的设施将信息写入/var/log/secure。

  例如,如果您有并想要将信息写入远程服务器,请使用以下配置:

  authpriv。*/var/log/secure

  *.info@umail180

  类似地,远程服务器将从本地syslog接收一个sendto请求,该请求将使用所请求的工具写入相应的文件,例如/var/log/secure。

  此时,remote /var/log/secure还记录了登录客户端的日志信息。

  4)如果要记录我服务器上那些鸟人的所有动作,可以用syslog吗?

  答案是肯定的。但似乎要经过一番波折才能说清楚。

  首先,并不是所有的操作都会写入日志,即使你把级别设置为最高级别。

  问题是真正涉及到写syslog日志的唯一操作是调用syslog函数,我们刚刚看到了两个调用syslog函数的命令,logger和initlog。

  他们各有各的用处。ls和cp之类的命令是不调用syslog函数的,所以就算你调级别调试也没用。

  好的。如何解决以上问题,先说initlog。不调用initlog可以用syslog记录它的运行结果吗?

  那很好。

  initlog -c /bin/bash

  此时,/var/log/message记录了它的运行结果。如果是rpm -qa,信息会很多。

  可惜会失去提示。这和PS1有很多相似之处。但是所有的命令都有效。

  再来说说logger。这里有一个区别。logger只是将信息写入syslog日志,并不执行这些信息。

  要执行这里的命令,还应该将命令写入syslog,然后根据syslog的远程功能,发送到远程syslog服务器。

  日志中的结果如下:

  6月2日16:12:52

  6月2日16:13:30 umail180 bash[24371]:黑客

  6月2日16:13:40

  6月2日16时13分43秒umail 180 bash[24371]:CD/usr/src/

  6月2日16:13:43

  6月2日16:13:46 umail 180 bash[24371]:CD red hat/

  6月2日16时13分47秒

  jun 2 16:28:11 umail 180 bash[24371]:CD SOURCES/

  6月2日16:28:11

  jun 2 16:28:13 umail 180 bash[24371]:ifconfig eth 0

  6月2日16:28:14

  jun 2 16:28:15 umail 180 bash[24371]:清除

  要在这里更改bash的源程序:

  简单描述一下bash的操作流程:

  主程序文件是shell.c,它会在profile中做一些设置,包括PS1等。最后,它将在eval.c中运行reader_loop函数,

  这个函数接收这些操作指令,然后调用execute_command函数来执行它们。当然,很复杂。这里,只是把

  当收到这些指令时,调用syslog函数并将其写入syslog服务的日志就可以了。至于以后怎么处决他们,那不是我们关心的。

  我换了两个地方:

  eval.c中的reader_loop函数插在143行左右:print _ to _ syslog(current _ command);

  Print_to_syslog是我的自定义函数。

  我在print_cmd.c源程序中加入了这个函数。

  如下所示:

  打印到系统日志(命令)

  COMMAND *命令;

  {

  命令_字符串_索引=0;

  openlog (bash ,LOG_PID,LOG _ local 5);

  syslog (LOG_INFO, %sn ,make _ command _ string(command));

  close log();

  }

  这里的openlog的LOG_LOCAL5是facility,是在syslog.conf中定制的。

  这里的syslog是一个系统函数,所以头文件syslog.h应该添加到print_cmd.c文件中。

  把bash源程序放进去。/configure;制造;Make install就可以了。

  最后,将您想要监视的用户的bash分配给新的bash文件。

  例如,将以下内容添加到syslog.conf:

  local5。*@umail180

  只需在远程syslog服务器中添加一个与上面对应的。

  local5。*/var/log/operator

  呵呵。所以你可以坐在电脑前看/var/log/operator,欣赏服务器上所有写手的表演。

  对于概念性学习,man检查syslog和syslog.conf以及openlog。

  这些都很有用。

标准syslog日志格式,syslog限制日志文件大小