存储应用程序日志一天

时间:2014-06-09 06:53:24

标签: linux unix logging log4j

我在Production中运行了一个应用程序。我们在哪里创建日志文件。日志文件的最大计数设置为10,最大调试写入设置为某个值,这样当日志文件变为6MB时,将创建一个新的日志文件。

因此,我们使用文件名滚动日志,如: -

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

我的问题是,在 10个日志文件中只能找到 15分钟的日志。 我知道我可以更新我的代码库以使用DailyRollingFileAppender。但我正在寻找的是一种短期解决方案,可以存储一天的日志,这样就可以在没有任何代码更改或最小代码/配置更改的情况下完成。例如,我可以通过一些cron作业或linux命令来实现这一点......等等。

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

非常感谢任何快速帮助。

〜感谢

2 个答案:

答案 0 :(得分: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="support@abc.com"
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 {} \;

答案 1 :(得分:0)

如果应用程序尝试创建.log.11,并且如果它根据脚本条件覆盖旧的,则不可能有一天的日志。 据我所知,应用程序日志记录非常多,所有10个文件都有最近15分钟的记录,并且新行再次被覆盖。

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