项目业务原因, catalina.out每天增长几近1个G, 先不说磁盘空间的占用, 排查日志时, 几个GB, 甚至几十个GB的文件打开都是个问题, 实在无可忍耐. 搜索一番, 无非2种方案:
1、用log4j接管tomcat的日志输出; 2、用cronolog来分隔. 个人偏向第一种, 无他, 因其简单, 且涉及几率问题, 改动的地方少, 改动得越少, 出错的几率越少, 最重要的是log4j更加熟悉, 也就是说更好维护, so, why not.
ok, 开动.
step 1:
需要为tomcat添加3个jar包, 分别为
log4j-1.2.9.jar、tomcat-juli.jar、tomcat-juli-adapters.jar. 第一个jar无需多说, 只需稍微在网上找一下就能搜索出一大堆, 后面那2个jar, 可以在tomcat的官网上找得到, 下载的时候需要注意tomcat版本:
http://www.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/extras/. 看到下载地址中的
extras没, 意思是说这个2个jar包不是在tomcat底下, 需要额外添加.
step 2:
把上面3个jar包拷贝到/opt/tomcat/lib目录下(新下载的tomcat在这个lib目录下是不会有这3个jar包的, 其他不敢说, 但是7.0.69这个版本是绝对没有的).
step 3:
修改context.xml中的<Context>节点, 为它增加一个属性
swallowOutput, 并将其值为
true,最终变成这样<Context swallowOutput="true">. 这个属性很关键, 只有这样才能彻底抛弃tomcat的stdout. 嗯, 顺便解析下这个属性: 如果该值为true,System.out和System.err的输出被重定向到web应用的logger; 如果没有指定,缺省值为false.
step 4:
好了, 到了这一步, 该为log4j定义一个日志输出的配置, 嗯, 就叫log4j.properties好了. 等等, 这个文件的名字还真不能胡改, 它名字必须是这个, 不然还需要改点别的东西, 至于改啥, 就不说了. 配置好了之后, 把log4j.properties文件放到/opt/tomcat/lib目录下. 以下为log4j.properties的配置内容:
log4j.rootLogger = INFO, CONSOLE, CATALINA
log4j.logger.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping = INFO
log4j.logger.org.springframework.beans.factory.xml.XmlBeanDefinitionReader = INFO
#log4j.logger.org.hibernate.cfg.annotations.EntityBinder = WARN
#log4j.logger.org.hibernate.cfg.AnnotationBinder = WARN
#log4j.logger.org.hibernate.cfg.annotations.CollectionBinder = WARN
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
log4j.logger.de.javakaffee.web.msm = ERROR
log4j.logger.org.apache.catalina.core = INFO, LOCALHOST
log4j.logger.org.apache.catalina.session = INFO, LOCALHOST
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
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.file = ${catalina.base}/logs/catalina.
log4j.appender.CATALINA.encoding = UTF-8
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.CATALINA.append = true
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.file = ${catalina.base}/logs/localhost.
log4j.appender.LOCALHOST.encoding = UTF-8
log4j.appender.LOCALHOST.datePattern = '.'yyyy-MM-dd'.log'
#log4j.appender.LOCALHOST.maxFileSize = 100MB
#log4j.appender.LOCALHOST.maxBackupIndex = 10
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.LOCALHOST.append = true
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.file = ${catalina.base}/logs/manager.
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.MANAGER.append = true
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.file = ${catalina.base}/logs/host-manager.
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.HOST-MANAGER.append = true
值得注意的是日志保存的文件名要保留"
."号,否则不会分类.
step 5:
重命名/opt/tomcat/config/logging.properties, 变成/opt/tomcat/config/logging.properties.bak. 不建议删除, 万一以后要恢复呢
step 6:
重启服务, 然后晚上别关机, 第二天就可以看到好消息了. 好, 就这样.
分享到:
相关推荐
Linux tomcat下catalina.out日志文件分割 前言: tomcat默认使用Java.util.logging记录日志,默认只记录tomcat的日志,不记录应用的日志。tomcat支持采用log4j进行日志记录,配置方法如下: 1.更新最新的tomcat_juli...
部署tomcat下的项目 监控的时候发现 日志中文乱码 ,tomcat 下catalina.out 日志乱码问题处理
最近发现tomcat日志文件catalina.out不断变大,我的服务器里该文件目前已接近10G,导致系统磁盘空间边变小,而且管理也难于管理,所以想用一种工具来分割它。网上找了找用cronolog。
catalina.out日志查看工具,不过查找不太好用,有时间会有便宜,可以定位到大概的位置。大多数情况是可以查到的
针对linux环境上tomcat不断输出到catalina.out文件的问题,提供一个按天分割catalina.out的脚本,以及操作说明。绝对可用!
windows下tomcat的catalina.out按天自动分割,windows下tomcat日志按天自动分割
Tomcat输出catalina.out的大小控制
今天小编就为大家分享一篇关于Tomcat使用Log4j输出catalina.out日志,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
catalina.out是tomcat把stdout和stderr重定向到文件后生成的日志文件,其生成是不受logging.properties 或 log4j.properties配置文件所影响的,需要另行安装工具(如cronolog或rotatelogs之类)进行处理。...
liunx版本 tomcat log目录下catalina.out文件切割工具,防止长时间运行导致catalina.out文件过大占用过多内存,里面有 切割工具和使用说明文档。
tomcat的catalina.out是tomcat的...越⼤,并且tomcat⾃身是没有带分割catalina.out的功能的。所有档如果某些需求需要导致我们查看 catalina.out⽂件的时候 会⽐较的苦恼。需要对tomcat的catalina.out⽂件进⾏分割
直接使用此jar包 放入tomcat lib目录下 修改conf配置文件 重起生效
tomcat日志 catalina.out分离 免去catalina,out过大的情况,并且查看日志方便,里面包含了食用方法和一个写好的catalina.sh文件 安装好cronolog后直接覆盖源文件
Tomcat日志catalina.out过大解决方案--使用logback的资源包,包括jar包,和使用文档,具体使用请参考我的同名博客。
tomcat下用Log4j 按文件大小,生成catalina.out日志文件
NULL 博文链接:https://fanth.iteye.com/blog/1736471
NULL 博文链接:https://shamu.iteye.com/blog/2089852
linux下切分tomcat的Catalina.out日志,文档包含相关安装工具
ubuntu下tomcat中输出日志,log4j替代catalina.out所需配置
Linux下,Tomcat日志文件catalina.out过大,可使用cronolog工具对日志拆分