开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

解决jetty7.x log日志异常巨大问题

简介:
+关注继续查看

最近从jetty6升级到了jetty7发现硬盘空间动不动就满了,我找... 我找.... 我找原因.... 发现是jetty7 logs目录搞得鬼,仅仅是个开发环境,1天1GB的日志,疯了! 这要是弄到生产环境还不完蛋啦!!我相信jetty的开发者不会这么缺心眼的、少智慧的,于是乎googling.....


E文太差先找中文的,发现了两位网友写的文章,说jetty自己实现了log系统,需要复写这个类.....  当时晕倒,不用这么麻烦吧。。。 于是觉然的开始 googling E文,终于找到了解决办法


jetty7有两套log系统,默认使用自己的 org.eclipse.jetty.util.log 如果配置来log4j则使用log4j。


在${jetty.home}/lib/ext 放入log4j jar包


在.jettyrc中加入 (jettyrc是什么我就不解释了)


-Dlog4j.configuration=file:/home/jetty/app/jetty7/resources/log4j.properties


# This is not needed by Jetty - but it helps with many web apps.

 

log4j.rootLogger=WARN, stdout

 

log4j.appender.stdout=org.apache.log4j.RollingFileAppender

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

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %t $

log4j.appender.stdout.File=${log4j.logdir}/stderrout.log

log4j.appender.stdout.MaxFileSize=204800KB

log4j.appender.stdout.MaxBackupIndex=10


 


之后修改etc/jetty-logging.xml


<?xml version="1.0"?>

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

 

 

<!-- =============================================================== -->

<!-- Configure stderr and stdout to a Jetty rollover log file        -->

<!-- this configuration file should be used in combination with      -->

<!-- other configuration files.  e.g.                                -->

<!--    java -jar start.jar etc/jetty-logging.xml                    -->

<!-- =============================================================== -->

<Configure id="Server" class="org.eclipse.jetty.server.Server">

 

    <New id="ServerLog" class="java.io.PrintStream">

      <Arg>

        <New class="org.eclipse.jetty.util.RolloverFileOutputStream">

          <Arg><Property name="jetty.logs" default="/var/log/jetty"/>/yyyy_mm_dd.stderrout.log</Arg>

          <Arg type="boolean">false</Arg>

          <Arg type="int">30</Arg>

          <Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT</Arg></Call></Arg>

          <Get id="ServerLogName" name="datedFilename"/>

        </New>

      </Arg>

    </New>

 

    <Call class="org.eclipse.jetty.util.log.Log" name="info"><Arg>Redirecting stderr/stdout to <Ref id="ServerLogName"/></Arg></Call>

    <Call class="java.lang.System" name="setErr"><Arg><Ref id="ServerLog"/></Arg></Call>

    <Call class="java.lang.System" name="setOut"><Arg><Ref id="ServerLog"/></Arg></Call>

 

</Configure>


30我猜是保留的文件个数,这个还有在考证

 


重启jetty,世界清爽啦!~~~


 


英文如下:


With Jetty 7.x you have 2 options.

Both require you to tell Jetty what kind of advanced logger you want to use.

* java.util.logging

* SLF4J


- java.util.logging -

Set a system property called "org.eclipse.jetty.util.log.class" to

"org.eclipse.jetty.util.log.JavaUtilLog" and from there you have all of the

standard java.util.logging configuration options to write to a file / roll

the log / etc ...


- SLF4J -

You'll want to setup SLF4J, have JettyLog use its SLF4J impl.

The mere existence of slf4j-api.jar in the classpath is enough to trigger

this behavior.

Download the slf4j-api.jar of your choice, and put it in

${jetty.home}/lib/ext

Be sure you checkout $ java -jar start.jar --version to see if it will load

into the Jetty Classpath (not your webapps)


Then you'll want to worry about how to take the SLF4J produced logging

events and route them to a logging impl you like.

Check out the docs at http://slf4j.org/ to understand how to setup slf4j.

For example: you can have SLF4J use log4j to write the logs to disk.


I personally like logback http://logback.qos.ch/ opposed to log4j, as it

allows me greater log routing control than log4j alone.

(Example: I can route all commons-logging & log4j & java.util.logging &

slf4j & stderr & stdout generated logging events to a file controlled by the

logback configuration under slf4j)


本文转自 guowang327 51CTO博客,原文链接:http://blog.51cto.com/guowang327/1770770,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Tomcat_异常_03_Tomcat日志(Logger)中文乱码
一、异常现象 tomcat的日志中出现中文乱码   二、异常解决 2.1 修改catalina.sh文件 在 Tomcat安装目录下的bin目录中,修改catalina.sh文件,第229行。
964 0
向jboss写入服务器日志
实际开发中,记录日志是常用的功能,jboss默认情况下已经记录了很多运行日志,如果开发人员要手动在server.log中写入日志,可以参考下面的方法: 1 package utils; 2 3 import java.
620 0
Jboss启动报错——DailyRollingFileAppender无法转换异常
问题:Jboss在启动时,报错java.lang.ClassCastException: org.jboss.logging.appender.DailyRollingFileAppender。
645 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载