博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决jetty7.x log日志异常巨大问题
阅读量:5956 次
发布时间:2019-06-19

本文共 3679 字,大约阅读时间需要 12 分钟。

最近从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,如需转载请自行联系原作者

你可能感兴趣的文章
推荐5大开源工具,用于开发Kubernetes项目
查看>>
制定2015年的移动开发策略
查看>>
JPA 2.2改进了易用性
查看>>
从蚂蚁金服实践入手,带你深入了解 Service Mesh
查看>>
24周年,“常青树”Delphi发布新版本10.3.1
查看>>
7. 从数据库获取数据- 从零开始学Laravel
查看>>
阿里百川码力APP监控 来了!
查看>>
使用dotenv管理环境变量
查看>>
温故js系列(11)-BOM
查看>>
Vuex学习
查看>>
bootstrap - navbar
查看>>
切图崽的自我修养-[ES6] 编程风格规范
查看>>
[React Native Android 安利系列]样式与布局的书写
查看>>
利用dxflib读写cad文件
查看>>
服务器迁移小记
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>