分时间段生成日志文件解决Tomcat日志过大

    

第1章        引言

1.1        编写目的

1.2        背景

1.3        方案大纲

第2章        解决方案—依旧用system.out

2.1        设计思路

2.2        程序设计

2.2.1修改startup.bat

2.2.2 创建Java类----LogRedirect类

2.2.3创建JSP----LogRedirect.jsp

2.2.4创建批处理----LogRedirect.bat

2.2.5Windows定时任务

2.3局限性

第3章        解决方案—采用log4j

3.1设计思路

3.2程序设计

3.2.1 修改项目中的log4j.properties

3.2.2补充

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 引言
    1.  编写目的

本文档意在说明Tomcat日志过大的解决方案。

 

    1. 背景

   由于现实生产中,Tomcat服务每天产生日志文件中的数据都特别庞大,造成日志文件无法打开,或打开后经常卡顿,影响到了运维、开发人员的日常工作。

 

    1. 方案大纲

 当前解决方案有两种:

  1. 依旧用system.out打印日志,通过修改Tomcat配置文件以及批处理来分时间段生成日志文件。
  2. 用log4j打印日志,只需修改log4j的配置信息,从而分时间段生成日志文件。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 解决方案—依旧用system.out
    1. 设计思路
  1. 修改Tomcat的startup.bat文件,使其在服务器启动时,会根据当前时间自动生成一个日志文件;
  2. 写java类,功能:根据当前时间生成日志文件,并把此java类嵌套入一个jsp中;
  3. 利用批处理执行此jsp;
  4. 利用Windows的定时任务功能,每小时执行一次该批处理文件;
  5. 因两个进程不能共用一个资源文件,故用到了备用文件(如:服务器启动生成09.log,Windows定时任务则生成09append.log)
    1. 程序设计

2.2.1修改startup.bat

将生产中的

改为:

功能:

  1. 若没有当前日期文件夹,则创建(如:2018-09-10);
  2. 在日期文件夹中,生成当前时间日志文件(如:若此时时间为09:22,则生成09.log文件);
  3. 若重启服务器时,已存在时间日志文件(如09.log或09append.log),则继续在该文件中进行日志打印。

 

 

 

 

2.2.2 创建Java类----LogRedirect类

功能:

  1. 生成时间日志文件,并将日志信息打印到里面;
  2. 若服务器启动时生成了时间文件(如09.log),因为两个进程不能共用一个资源,故此时生成备用时间文件(如:09append.log),并将日志信息打印到里面。

2.2.3创建JSP----LogRedirect.jsp

功能:

         调用LogRedirect类的redirect方法。

 

 

 

 

2.2.4创建批处理----LogRedirect.bat

功能:调用LogRedirect.jsp

2.2.5Windows定时任务

功能:每小时执行LogRedirect.bat,进而生成时间日志文件(如08.log  09.log)

2.3局限性

1.因两个进程不能共用一个资源,用到了append.log(如09append.log),这样会多生成一个日志文件;

2.需要修改代码;

3.需要代码和批处理相结合,同时需要Windows定时任务支持,比较复杂。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 解决方案—采用log4j

3.1设计思路

采用log4j记录Tomcat日志,只需要修改配置文件,即可完成分时间段分割日志文件。

3.2程序设计

3.2.1 修改项目中的log4j.properties

添加<param name=”DatePattern” value=”yyyyMMdd-HH”/>,如图所示:

即可实现每小时都生成debug、info和error日志信息,如图所示:

其中:lis_debug.log(记录debug和info日志)和lis_error.log(记录error日志)相当于一个临时容器,如现在记录日志的时间在18:00-19:00,此时日志先临时打印到lis_debug.log和lis_error.log,等到19:00之后,若还有日志需要打印,则会自动生成lis_debug.log20180912-18文件和lis_error.log20180912-18文件,临时容器中的日志会全部转移到其中,随即清空临时容器,继续记录19:00-20:00的日志,以此类推。

         注:若容器没有日志记录(如在18:00-19:00之间没有error日志产出),则在下一个时间(即19:00之后),不会生成相对应时间段的日志文件(即不会生成lis_error.log20180912-18)

 

3.2.2补充

         因为技术有限,无法通过修改log4j.properties实现自动生成日期文件夹(存放当天生成的日志);

         现存在一思路,利用辅助程序来生成日期文件夹,然后通过IO将当天的日志拷贝到该文件夹中,但此想法还未实现

猜你喜欢

转载自blog.csdn.net/ZPHTTT/article/details/83140571
今日推荐