linux日志

Posted 夜半歌声断

tags:

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

linux日志管理

一、日志文件位置

 

 

 

 

 二、日志服务rsysogd

日志格式等级: 日志服务 [连接符号] 日志等级   日志记录位置

 

 

 

 

 

 

 

 

 日志记录位置:

  (1)绝对路径  

  (2)系统设备文件

  (3)远程主机:可以选择TCP协议和UDP协议传输日志信息。

      UDP : “@192.168.0.210:514”

      TCP :  “@@192.168.0.210:514”

  (4)用户名,mail.* * 把所有级别的日志发送给所有在线用户,如果发送给多个用户,用户名之间用 “,”分割。

·  日志等级为“none”,或者日志记录位置为“~”,代表不会记录。

主配置文件 :/etc/rsyslog.conf 配置文件的内容

[root@localhost ~]# vi /etc/rsyslog.conf
#查看配置文件的内容
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
#加载模块
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
#加载 imuxsock 模块,为本地系统登录提供支持
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#加载 imklog 模块,为内核登录提供支持
#$ModLoad immark # provides --MARK-- message capability
#加载 immark 模块,提供标记信息的能力
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
#加载 UPD 模块,允许使用 UDP 的 514 端口接收采用 UDP 协议转发的日志
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
#加载 TCP 模块,允许使用 TCP 的 514 端口接收采用 TCP 协议转发的日志
#### GLOBAL DIRECTIVES ####
#定义全局设置
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#定义日志的时间使用默认的时间戳格式
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
#文件同步功能。默认没有开启,是注释的。
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
#包含/etc/rsyslog.d/目录中所有的“.conf”子配置文件。也就是说这个目录中的所有
#子配置文件也同时生效。
#### RULES ####
#日志文件保存规则
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
#kern 服务.所有日志级别 保存在/dev/console
#这个日志默认没有开启,如果需要,则取消注释
# Log anything (except mail) of level info or higher.
# Don\'t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#所有服务.info 以上级别的日志保存在/var/log/messages 日志中。
#mail,authpriv,cron 的日志不记录在/var/log/messages 日志文件中,因为它们都有自己的日志文件。
#所以/var/log/messages 日志是最重要的系统日志文件,需要经常查看!
# The authpriv file has restricted access.
authpriv.* /var/log/secure
#用户认证服务所有级别的日志保存在/var/log/secure 日志中
# Log all the mail messages in one place.
mail.* -/var/log/maillog
#mail 服务的所有级别的日志保存在/var/log/maillog 日志中。
#“-”号的含义是日志先在内存之中保存,当日志够多之后,再向文件中保存。
# Log cron stuff
cron.* /var/log/cron
#计划任务的所有日志保存在/var/log/cron 日志中
# Everybody gets emergency messages
*.emerg *
#所有日志服务的疼痛等级日志对所有在线用户广播。
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
#uucp 和 news 日志服务的 crit 以上的日志保存在/var/log/sppoler 日志文件中。
# Save boot messages also to boot.log
local7.* /var/log/boot.log
#loacl7 日志服务的所有日志写入/var/log/boot.log 日志中。
#会把开机时的检测信息在显示到屏幕的同时,写入/var/log/boot.log 日志中
# ### begin forwarding rule ###
#定义转发规则
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ##

定义自己的日志

[root@localhost ~]# vi /etc/rsyslog.conf
#写入一下一句话
*.crit /var/log/alert.log
#把所有服务的“临界点”以上的错误都保存在/var/log/alert.log 日志中
[root@localhost ~]# service rsyslog restart
关闭系统日志记录器: [确定]
启动系统日志记录器: [确定]
#重启 rsyslog 服务
[root@localhost ~]# ll /var/log/alert.log

三、日志轮替

1、日志文件的命名规则

  主要依靠 /etc/logrotate.conf 配置文件中“dateext”参数:

2、logrotate 配置文件

# no packages own wtmp and btmp -- we\'ll rotate them here
#以下两个轮替日志有自己的独立参数,如果和默认的参数冲突,则独立参数生效。
/var/log/wtmp {
#以下参数仅对此目录有效
monthly
#每月对日志文件进行一次轮替
create 0664 root utmp
#建立的新日志文件,权限是 0664,所有者是 root,所属组是 utmp 组
minsize 1M
#日志文件最小轮替大小是 1MB。也就是日志一定要超过 1MB 才会轮替,否则就算
#时间达到一个月,也不进行日志转储
rotate 1
#仅保留一个日志备份。也就是只有 wtmp 和 wtmp.1 日志保留而已
}
/var/log/btmp { #以下参数只对/var/log/btmp 生效 missingok #如果日志不存在,则忽略该日志的警告信息 monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.

配置文件主要参数:

 

 

  prerotate 和 postrotate 主要用于在日志轮替的同时,执行指定的脚本,一般用于日志轮替之后重启服务。这里强调,如果你的日志是写入 rsyslog 服务的配置文件的,那么把新日志加入 logrotate后,一定要重启 rsyslog 服务,否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中。那是因为虽然 logrotate 知道日志轮替了,但是 rsyslog 服务却并不知道。同理,如果你的日志不是被 rsyslog 管理,如源码包安装的 Apache、nginx 等服务,则需要重启 Apache 或 Nginx 服务,否则日志也不能正常轮替。

3、把自己的日志加入日志轮替

(1)直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略

(2)在/etc/logrotate.d 目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被“include”到主配置文件中。

 

例子:

[root@localhost ~]# chattr +a /var/log/alert.log
#先给日志文件赋予 chattr 的 a 属性,保证日志的安全
[root@localhost ~]# vi /etc/logrotate.d/alter
#创建 alter 轮替文件,把/var/log/alert.log 加入轮替
/var/log/alert.log {
weekly 每周轮替一次
rotate 6 保留 6 个轮替日志
sharedscripts 以下命令只执行一次
prerotate 在日志轮替之前执行
/usr/bin/chattr -a /var/log/alert.log
#在日志轮替之前取消 a 属性,以便让日志可以轮替
endscript 脚本结束
sharedscripts
postrotate 在日志轮替之后执行
/usr/bin/chattr +a /var/log/alert.log
#日志轮替之后,重新加入 a 属性
endscript
sharedscripts
postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
endscript
#重启 rsyslog 服务,保证日志轮替正常
}

4、logrotate 命令

  我们日志轮替之所以可以在指定的时间备份日志,其实也要依赖系统定时任务。如果大家还记得/etc/cron.daily/目录,就会发现这个目录中是有 logrotate 文件,logrotate 通过这个文件依赖定时任务执行的。

[root@localhost ~]# logrotate [选项] 配置文件名
选项:
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v: 显示日志轮替过程。加了-v 选项,会显示日志的轮替的过程
-f: 强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有
的日志进行轮替

 

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

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

webstorm代码片段的创建

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02

python常用代码片段总结

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?