您的位置:首页 > 运维架构 > Tomcat

tomcat 日志用log4j管理

2016-01-13 15:55 525 查看
            近段时间发现tomcat 经常突然down掉,在网上查了一下,说法大都相同,内存溢出,数据库连接异常等 

其中有个是tomcat日志文件过大。  ........我也忘了是怎么弄的日志文件过大上面了 反正起因是因为tomcat经常无故挂掉。

下面直说log4j管理tomcat日志:

基本的也就是tomcat官网给出的文档:

下面是转别人翻译官网上的文档

转自:点击打开链接

本文介绍如何配置tomcat使用log4j来替代java.util.logging来产生tomcat本身的日志信息。

说明:只有当我们需要重新配置tomcat来使用Apache log4j来记录tomcat本身的日志时才需要这部分所讲内容。当仅仅想在我们的web应用程序中使用log4j时这些操作不是必要的。如果是仅仅想在web应用中使用log4j,只要把log4j.jar和log4j.properties放到web应用的WEB-INF/lib和WEB-INF/classes目录下即可。

 

下面的步骤介绍了在tomcat中配置log4j来输出tomcat内部日志。

1、创建一个包含下面内容的名为log4j.properties的文件,并且把它存储在$CATALINA_BASE/lib目录下。

[java] view
plaincopy

log4j.rootLogger=INFO, CATALINA  

  

# Define all the appenders  

log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender  

log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.  

log4j.appender.CATALINA.Append=true  

log4j.appender.CATALINA.Encoding=UTF-8  

# Roll-over the log once per day  

log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'  

log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout  

log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n  

  

log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender  

log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.  

log4j.appender.LOCALHOST.Append=true  

log4j.appender.LOCALHOST.Encoding=UTF-8  

log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'  

log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout  

log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n  

  

log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender  

log4j.appender.MANAGER.File=${catalina.base}/logs/manager.  

log4j.appender.MANAGER.Append=true  

log4j.appender.MANAGER.Encoding=UTF-8  

log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'  

log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout  

log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n  

  

log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender  

log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.  

log4j.appender.HOST-MANAGER.Append=true  

log4j.appender.HOST-MANAGER.Encoding=UTF-8  

log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'  

log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout  

log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n  

  

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  

log4j.appender.CONSOLE.Encoding=UTF-8  

log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout  

log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n  

  

# Configure which loggers log to which appenders  

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST  

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\  

  INFO, MANAGER  

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\  

  INFO, HOST-MANAGER  

2、下载Log4j(1.2或者是更高版本)。

3、下载或者是编译tomcat-juli.jar和tomcat-juli-adapters.jar,这两个组件对于tomcat来说是附件组件。详情查看附件组件文档

这个tomcat-juli.jar与tomcat默认的同名文件不同。它包括Apache Commons Logging的实现,所以我们可以用它来呈现log4j日志信息并且配置log4j。

4、如果我们想在tomcat全局内配置并且使用log4j:

   l  把log4j.jar放到$CATALINA_HOME/lib下面;

   l  使用从tomcat官方网站上下载的附加组件tomcat-juli.jar替换$CATALINA_HOME/bin/tomcat-juli.jar;

   l  把附件组件tomcat-juli-adapters.jar放到$CATALINA_HOME/lib目录下;

5、如果我们的tomcat拥有不同的$CATALINA_HOME和$CATALINA_BASE目录,并且我们只想在$CATALINA_BASE目录下配置使用log4j。

   l  如果$CATALINA_BASE/bin和$CATALINA_BASE/lib目录不存在,那么首先创建它们;

   l  把log4j.jar放到$CATALINA_BASE/lib目录下;

   l  使用附加的tomcat-juli.jar替换$CATALINA_BASE/bin/tomcat-juli.jar;

   l  把附加的tomcat-juli-adapters.jar放到$CATALINA_BASE/lib目录下;

   l  如果我们是在安全模式下运行,我们需要编辑$CATALINA_BASE/conf/catalina.policy文件使tomcat可以使用不同的tomcat-juli.jar;

   l  旧版本的tomcat.juli.jar仍然被bootstrap的manifest引用,因此它会在tomcat的类路径下隐式的表现出来。tomcat启动脚本把$CATALINA_BASE/bin/tomcat-juli.jar配置在bootstrap.jar前面,所以它应该有更高的优先级。因此考虑到移除不需要的tomcat-juli.jar副本(把它copy到不使用log4j的其它任何$CATALINA_BASE目录下),这应该没什么问题。Tomcat 7不存在这个问题。

6、删除$CATALINA_BASE/conf/logging.properties文件来防止java.util.logging产生零长度的日志文件。

7、启动tomcat。

我看了好多博客或者文档都是只弄到这里,或者是官方文档就是这样的原因。

配置好发现这样配置只是吧tomcat自己的日志管理起来,我其实想管理所有日志,包括tomcat上项目的日志。

然后就是修改catalina.sh 文件内容 

1.把"logging.properties"改为"log4j.properties"

这样发布在tomcat上的项目日志也会在catalina.out中打出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat