|
分析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服务 |
|
|