就我们自己的框架而言,每一次操作都会经过Controller(一个),而Controller会调用服务Service(可能有多个),每一次的请求情况和调用Service的情况都记录再日志文件中。通过解析日志文件,可以发现系统中耗时的业务以及常出错的业务等。
日志文件localhost_access_log通过server.xml文件配置,每一行格式主要通过
<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"/> 中的pattern属性配置:

%a - 远端IP地址

%A - 本地IP地址

%b - 发送的字节数,不包括HTTP头,如果为0,使用"-"

%B - 发送的字节数,不包括HTTP头

%h - 远端主机名(如果resolveHost=false,远端的IP地址)

%H - 请求协议

%l - 从identd返回的远端逻辑用户名(总是返回 '-')

%m - 请求的方法(GET,POST,等)

%p - 收到请求的本地端口号

%q - 查询字符串(如果存在,以 '?'开始)

%r - 请求的第一行,包含了请求的方法和URI

%s - 响应的状态码

%S - 用户的session ID

%t - 日志和时间,使用通常的Log格式

%u - 认证以后的远端用户(如果存在的话,否则为'-')

%U - 请求的URI路径

%v - 本地服务器的名称

%D - 处理请求的时间,以毫秒为单位

%T - 处理请求的时间,以秒为单位

要分析性能,我们需要知道 请求时间、请求路径(可作名称)、请求状态码、发送字节数、请求时长。
那么可配置pattern为:"%h %t &quot;%r&quot; %s %b %T"。
其中,“&quot;”表示一个英文引号。
第一步:筛选有效的数据行
    对于Controller,请求路径以"/jyglFront"开头但不以"/jyglFront/mainView/navigate"开头。
    对于Service,请求路径以"/jygl/jaxrs"开头。
第二步:对有效数据行进行处理解析,解析之前需要对log格式的时间进行处理,若不好处理,可将其替换为日志文件名中的时间。

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

持久化框架——编程模型详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。