示意图
简述
1. NioEndpoint 接收请求
2. Processor 的子类AbstractProcessorLight 处理请求
3. AbstractProcessorLight方法service请求
4. 请求失败触发CoyoteAdapter找到对应的container,
5. 通过ContainerBase找到该container关联的Values,有哪些values实现了AccessLog,将这些values填充到AcesslogAdapter
6. 通过AcesslogAdapter依次触发这些values的访问日志输出。
关键代码入口
1. 处理请求 org.apache.coyote.AbstractProcessorLight#process
2. coyoteAdapter 承接log任务 org.apache.catalina.connector.CoyoteAdapter#log 找到对应的container触发logAccess
3. org.apache.catalina.core.ContainerBase#logAccess
4. containerBase创建AccessLogAdapter和添加value org.apache.catalina.core.ContainerBase#getAccessLog