设为首页 收藏本站
查看: 300|回复: 0

[经验分享] Tomcat 6.0 日志处理

[复制链接]

尚未签到

发表于 2017-1-20 07:25:23 | 显示全部楼层 |阅读模式
  本文主要讲的是 Tomcat 自己本身对日志的处理,而非每个 webapp 的日志配置(现在 webapp 一般会独立配置日志)。
  内容基本上来自官方文档:http://tomcat.apache.org/tomcat-6.0-doc/logging.html
一、Webapp 记录日志的方法
  Tomcat 中的 webapp 有三种方法记录日志:

  • 使用 java.util.logging
  • 使用 Servlet 标准中的日志记录方法 javax.servlet.ServletContext.log(...)
  • 使用任意其它的日志框架(例如 Log4j)
  一般来说,每个 webapp 使用的日志框架都是独立的,不会影响其他 webapp。但如果用的是 Java 原生的 java.util.logging,由于它是通过系统加载的,因此各个 webapp 之间会共享同一个日志配置。
二、什么是 JULI
  Tomcat 默认会使用 java.util.logging (JUL) 日志框架,但重写了一些实现,以解决一个 JVM 中 JUL 只能使用一个配置文件的问题,满足多个 webapp 独立配置日志的需求。这个实现就叫 JULI (['dʒu:li])。
  全局日志配置

  • 默认使用 ${catalina.base}/conf/logging.properties,这个路径在 Tomcat 启动脚本中通过 java.util.logging.config.file 系统属性指定
  • 如果上述默认配置文件不可用(不存在或无权限读取),则使用 JRE 中的 ${java.home}/lib/logging.properties
  webapp 独立日志配置

  • JULI 支持每个 ClassLoader (也就是每个 webapp) 使用自己的日志配置,配置文件位于 {webapp]/WEB-INF/classes/logging.properties
  控制台

  • 在 Linux 上运行 Tomcat 时,控制台的输出 (System.err/out) 同时会被保存到文件 catalina.out 中,这个名称是通过运行脚本指定的
  • 在 Windows 上,如果以服务的形式运行 Tomcat,也会将控制台输出保存到文件(文档没说文件名是什么。。。),如果不以服务的形式运行,则不会保存控制台输出
三、JULI 对 JUL 的扩展

  • 配置文件中能通过 ${systemPropertyName} 的格式使用系统属性
  • Handler

    • JUL 中,handler 名称即为类的完整限定名,一个类只能创建一个 handler。而 JULI 的 handler 名称可以在类的完整限定名之前加前缀,该前缀以数字开头,以 . 结尾(注意中间不能出现 .),例如 5portallocal.
    • JULI 定义一些 handler 类,例如 org.apache.juli.FileHandler,支持缓冲。

  • Logger

    • 每个 logger 可以指定多个 handler(Java 6 的 JUL 开始支持)
    • root logger 可以使用 .handler 指定 handler:

      • org.apache.catalina.core.ContainerBase.[Catalina].[localhost].useParentHandlers = true

    • 注意,如果一个 logger 已经指定了 handler,则默认不会将日志传递给上级 logger,但可以通过 useParentHandlers 修改

      • org.apache.catalina.core.ContainerBase.[Catalina].[localhost].useParentHandlers = true


四、生产环境中的注意事项

  • root logger 默认配置了 FileHandler 和 ConsoleHandler,而控制台输出一般又被保存到文件中,导致相同的日志被保存了2份,可以考虑将 ConsoleHandler 从 root logger 中去除。
  • 删除没必要的 handler,例如 host-manager 的。
  • handler 默认使用系统默认编码,可以考虑显式指定编码。
  • 考虑配置 access log,可参考 http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access_Log_Valve
五、其它
  Tomcat 也能配置为使用 Log4j 代替 JULI 来处理日志,详见 http://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_Log4j

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-330830-1-1.html 上篇帖子: Tomcat源码学习(一) 下篇帖子: tomcat内存溢出 PermGen space
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表