Coin163

首页 > Tomcat源码分析-AccessLogValve类

Tomcat源码分析-AccessLogValve类

相关标签: tomcat 源码

2020腾讯云限时秒杀,爆款1核2G云服务器99元/年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2020阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:Tomcat源码分析-JMX(终)

背景 前几节分析了Tomcat中跟JMX有关的内容,昨天继续分析了JMX的架构图,以及JVM启动JMX的流程,整理出JDK中相关的类图,以巩固对JMX的理解。 架构图 sun公司定义的JMX架构图,百来的图片如下: 纵观上图,以虚线分割,分为三层: 第一层,远程管理层应用,

类概况

Tomcat的server.xml中,Host节点的子元素名称是Valve,用来定义一系列的处理器,AccessLogValve就是用来记录容器访问请求的日志处理类。Valve,本意是阀门的意思,AccessLogValve是处理生成访问日志的,梳理它的类图如下:

这里写图片描述
它的所有的成员变量大多都跟日志文件写入操作有关。

使用方法

tomcate的默认配置为:

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>

xml节点可以添加任意该类的属性,而且它的所有属性都是有默认值的,例如renameOnRotate是false,即每天产生的日志文件都是以日期为后缀的。
renameOnRotate为true的情况下,当天的日志文件是没有日期后缀的,就是localhost_access_log.txt,每天日期切换时,当天文件重命名为前一天日期后缀,同时新生成当天文件。

相关推荐:Tomcat源码分析-JMX(下)

背景 上一节分析了Registry类的功能,其引用management包中所有的类,也就是JDK支持JMX功能的类,本节将继续分析类图的其他部分。 类图分析 JMX的类图截取如下: 分析类图得到几点信息如下: 第一,JmxBeanServer和DefaultMBeanServerInterceptor类,它们都是

主要流程

这个类是LifecycleMBeanBase的子类,所以它是随着容器一起启动的,它的startInternal承担着创建日志文件的责任,它的log操作是记录请求日志的,同时先执行rotate操作,判断是否需要生成新日志文件。主要方法有open,close,rotate和close。
open和close流程图如下:

这里写图片描述

rotate和close流程图如下:

这里写图片描述

启示录

主要就是根据当前日期和记录的dateStamp进行比对,如果日期发生变化,就生成新的日志文件。这个类的renameOnRotate属性决定了日志文件的存在形式是单一的日期后缀的日志呢,还是历史日志以日期结尾,当前日志没有日期后缀。
而renameOnRotate属性为true的使用方式,它的表现形式跟log4j的org.apache.log4j.DailyRollingFileAppender类的日志处理方式一样,即当前和历史日志文件名的格式不一样。当然,这是我观察tomcat日志时发现的,推断DailyRollingFileAppender的实现方式应该跟这个类差不多,哪天再去验证一下。

原文

类概况 Tomcat的server.xml中,Host节点的子元素名称是Valve,用来定义一系列的处理器,AccessLogValve就是用来记录容器访问请求的日志处理类。Valve,本意是阀门的意思,AccessLogValve是处理

------分隔线----------------------------