linux分隔各种日志

有两篇文章可供参考:

随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。

 

当Tomcat的日志文件catalina.out的大小大于2GB时,Tomcat程序崩溃时将有可能会启动失败并且不会有任何错误信息提示。为了避免该场景的出现,我们要定期轮转catalina.out日志文件。

 

这里小白使用CentOS6U5自带的logrotate程序来解决catalina.out的日志轮转问题。这种方式比较简单。在/etc/logrotate.d/目录下新建一个名为tomcat的文件,

1
2
3
4
5
6
7
8
9
10
cat  > /etc/logrotate .d /tomcat  <
/usr/local/apache-tomcat-8 .0.28 /logs/catalina .out{
     copytruncate
     daily
     rotate 7
     missingok
     compress
     size 16M
}
EOF

 

以上的配置说明:

1
2
3
4
5
6
7
8
/usr/local/apache-tomcat-8 .0.28 /logs/catalina .out{  # 要轮转的文件
     copytruncate  # 创建新的catalina.out副本后,截断源catalina.out文件
     daily      # 每天进行catalina.out文件的轮转
     rotate 7    # 至多保留7个副本
     missingok    # 如果要轮转的文件丢失了,继续轮转而不报错
     compress    # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
     size 16M    # 当catalina.out文件大于16MB时,就轮转
}

 

以上是如何工作的呢?

  1. 每天晚上crond守护进程会运行在/etc/cron.daily目录中的任务列表;

  2. 与logrotate相关的脚本也在/etc/cron.daily目录中。运行的方式为"/usr/bin/logrotate /etc/logrotate.conf";

  3. /etc/logrotate.conf文件include了/etc/logrotate.d/目录下的所有文件。还包括我们上面刚创建的tomcat文件;

  4. /etc/logrotate.d/tomcat文件会触发/usr/local/apache-tomcat-8.0.28/logs/catalina.out文件的轮转。

 

 

以上是程序自动完成的,不需要我们干预。当然了,我们也可以使用手工的方式进行logrotate程序。在命令行进行如下运行:

1
logrotate  /etc/logrotate .conf

或者只轮转刚刚的tomcat配置文件,可以这样运行:

1
logrotate --force  /etc/logrotate .d /tomcat

 

要想获得logrotate程序的更多帮助信息,可以查看其man page,

1
man  logrotate

 

可以看一下catalina.out轮转前后的文件大小,

轮转之前:

1
2
3
4
du  -sh *
...
2.0G    catalina.out  # 未轮转之前的文件大小
...

 

轮转之后的文件大小:

1
2
3
# du -sh catalina.out*
2.0M    catalina.out
60M catalina.out.1.gz  # 轮转之后,进行压缩,日志文件变得更小了

 

另外在Tomcat的logs目录,每天都会产生很多日志文件,我们也可以定期手工或使用定时任务来删除7天前的日志文件,这里使用手工的方式进行演示,

1
2
cd  /usr/local/apache-tomcat-8 .0.28 /logs
find  -mtime +7 - exec  rm  -f {} \;



第二篇:

1.下载logrotate

在Fedora和CentOS安装

yum install logrotate crontabs

Debian和Ubuntu上

apt-get install logrotate cron

2.创建日志文件在文件里面添加日志

vim /var/log/file.log

 3.创建file.log的配置文件添加

复制代码
vim /etc/logrotate.d/file

/vsr/log/file.log{
daily 日志文件按每个月轮循 daily 每天 weakly 每星期 yealy 每年
rotate 5 储存5个归档日志,对于第六个归档,时间最久的自动删除
compress 以归档的文件用gzip进行压缩
mail address 把转储的日志文件发送到指定的E-mail 地址
nocompress 不需要压缩时,用这个参数 
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断 
nocopytruncate 备份日志文件但是不截断
create 644 root root 转储文件,使用指定的文件模式创建新的日志文件 
size 20M 指定文件当天达到20M的时候才转储
dateext 文件后加上当前日期
}
以上的参数可以根据自己的需求而添加
复制代码

4.手动切割日志

logrotate -vf  /etc/logrotate.d/file

 5.在/var/log/ 目录下你会看到分割的日志文件

linux分隔各种日志_第1张图片

6.还可以使用crontab定时写入数据到file.log  

首先检查crontab是否启动

检查crontab服务是否启动
service crond status
启动crontab服务
service crond start

7.使用命令 crontab -e 命令进入编辑模式定时写入数据到file.log

#cron 格式
   */1        *              *            *            *        echo"ni hao nihao" >>/var/log/file.log
#分钟(0~59)  小时(0~23)   几号(1~31)   几月(1~12)  星期几(0~7)      命令
#每行代表都代表一个任务
#上面代码意思是每分钟向文件file.log文件写入 nihao nihao

8.查看当前任务

crontab -l

9.查看定时任务的数据是否写入文件

tail -f  /var/log/file.log

logrotate定义了如何处理日志,而它本身则是被crond定时调用的。crond是一个Unix系操作系统中的定时调度软件,下面一段文字是从wiki上抄来的:

The software utility Cron is a time-based job scheduler in Unix-like computer operating systems. People who set up and maintain software environments use cron to schedule jobs (commands or shell scripts) to run periodically at fixed times, dates, or intervals. It typically automates system maintenance or administration—though its general-purpose nature makes it useful for things like connecting to the Internet and downloading email at regular intervals.

默认的logrotate是一天运行一次,它的脚本被放在/etc/cron.daily/下面。除了cron.daily外还有cron.weekly,cron.monthly,cron.hourly等分别对应不同的频率,你可以根据自己的需要把脚本放在不同的文件夹下面。在设置外所有东西以后,别忘了使用chkconfig crond on来保证它会一直开机运行。然后就大工告成了。


你可能感兴趣的:(项目部署)