2014-06-09 59 views
0

我有一个应用程序在生产中运行。我们在哪里创建日志文件。日志文件的最大数量设置为10,最大调试写入设置为某个值,以便当日志文件变为6MB时创建一个新的日志文件。存储应用程序日志一天

因此,我们使用文件名如: -

<file_name>.log 
<file_name>.log.1 
<file_name>.log.2 
... 
<file_name>.log.10 

我的问题是什么,只有记录为15分钟可以在这些10个日志文件被发现。 我知道我可以更新我的代码库使用DailyRollingFileAppender。但是我正在寻找的是一种短期解决方案,可以将日志存储一天,以便无需任何代码更改或最少的代码/配置更改即可完成。例如,可能我可以通过一些cron作业或linux命令实现此目的。等等。

注意: - 我正在生产Linux OS上运行此应用程序。

任何快速帮助,高度赞赏。

〜感谢

+0

'将日志文件的最大数量设置为10,并将最大调试写入设置为某个值,以便日志文件变为6MB时创建新的日志文件。那么你之后做了什么?意思是它会覆盖旧的日志形式新的? –

+0

是的!明显。翻转会更合适,然后覆盖。当文件达到最大配置大小时记录翻转。将新日志写入 .log文件。随着文件大小的增加,它的内容被转移到* .log.1 ... * .log.10文件中......简单地说,旧内容被删除并且新内容被翻转。 –

回答

1

你可以做到这一点创建一个shell脚本并添加它来cron作业。

NOW_DATE=$(date +"%m-%d-%Y-%H-%M") 
cd /var/log/OLD_LOGS 
mkdir /var/log/OLD_LOGS/$NOW_DATE 

cd /var/log/ 
mv server.log.* /var/log/OLD_LOGS/$NOW_DATE/ 
mv *.zip /var/log/OLD_LOGS/$NOW_DATE/ 
cp server.log /var/log/OLD_LOGS/$NOW_DATE/ 

cd /var/log/OLD_LOGS/$NOW_DATE 
x=$(ls -l |wc -l) 
if [ $x -le 1 ] then 
SUBJECT="There is an issue with generating server log - less number of files" 
EMAIL="[email protected]" 
EMAILMESSAGE="/tmp/errormsg.txt" 

/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE 
fi 

cd /var/log/OLD_LOGS/ 
zip -r $NOW_DATE.zip $NOW_DATE 
rm -r -f $NOW_DATE 

find /var/log/ -type f -mtime +180 -exec rm {} \; 
0

如果应用程序试图创建.log.11,如果它会覆盖旧的按脚本的条件,不存在有一天日志的可能性。 我的理解是应用程序日志记录非常类似于所有10个文件都有最近15分钟的日志记录,并且新行再次被覆盖。

应该修改应用程序逻辑以确保它捕获日志。另外,请确保定期压缩文件,以便节省一些磁盘空间。

相关问题