自定义weblogic的HTTP访问日志
分析http的访问日志,得到网站的访问统计。weblogic的HTTP访问日志的常用日志格式不能支持HTTP request请求中的User-Agent(可得到搜索引擎), Referer(可得到搜索关键字)等HEADER,扩展日志中的字段标识符也没有定义,不能对搜索关键字等,因此要使用自定义字段标识符。
1.设置访问日志的方式为自定义。
登录weblogic控制台,设置HTTP访问日志为自定义(具体可参考weblogic的文档)
2. 编写实现CustomELFLogger接口的自定义的类
java 代码
[*]import java.util.Enumeration;
[*]
[*]import weblogic.servlet.logging.CustomELFLogger;
[*]import weblogic.servlet.logging.FormatStringBuffer;
[*]import weblogic.servlet.logging.HttpAccountingInfo;
[*]
[*]/**
[*] * 1.0
[*] */
[*]public class MyCustomField implements CustomELFLogger {
[*]
[*] /* (non-Javadoc)
[*] * @see weblogic.servlet.logging.LogField#logField(weblogic.servlet.logging.HttpAccountingInfo, weblogic.servlet.logging.FormatStringBuffer)
[*] * 格式为ip logname datetime methodurl user-agent code length referer
[*] * 10.16.79.5 - 2007-04-18 17:02:04 "GET /js/common.js HTTP/1.1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" 200 81 “www.google.cn/search?q=xxx”
[*] */
[*] public void logField(HttpAccountingInfo metrics,FormatStringBuffer buff) {
[*] java.text.SimpleDateFormat sd = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
[*] buff.appendValueOrDash(metrics.getRemoteAddr());
[*] if(metrics.getRemoteUser()!=null && !"".equals(metrics.getRemoteUser().trim())){
[*] buff.appendValueOrDash(" "+metrics.getRemoteUser());
[*] }else{
[*] buff.appendValueOrDash(" -");
[*] }
[*] String datetime = sd.format(java.util.Calendar.getInstance().getTime());
[*] buff.appendValueOrDash(" "+datetime);
[*] buff.appendValueOrDash(" \""+metrics.getMethod()+" "+metrics.getRequestURI()+" "+metrics.getProtocol()+"\"");
[*] buff.appendValueOrDash(" \""+metrics.getHeader("User-Agent")+"\"");
[*] buff.appendValueOrDash(" "+metrics.getResponseStatusCode());
[*] buff.appendValueOrDash(" "+metrics.getResponseContentLength());
[*] if(metrics.getHeader("Referer")!=null){
[*] buff.appendValueOrDash(" \""+metrics.getHeader("Referer")+"\"");
[*] }else{
[*] buff.appendValueOrDash(" \"-\"");
[*] }
[*] }
[*]}
3.把编译好的类复制到weblogic的启动命令中指定的文件夹,<o:p></o:p>
4.修改第1步指定的Log文件初始设置为:
#Version: 1.0
#Fields: x-MyCustomField
#Software: WebLogic
<o:p> </o:p>
注意log文件初始设置最后一行为空行,Fields中”x-“紧跟java类的文件名
5.重新启动weblogic服务
页:
[1]