2013-08-25 32 views
0

我正在与siginup /登录过程一个网站。而且我喜欢在用户注册或进入我的网站时插入用户ID。 我的Apache的access.log是在以下几点:定制Apache日志

115.137.10.87 - - [26/Aug/2013:07:38:52 +0900] "GET /api/game/ HTTP/1.1" 200 1402 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 
115.137.10.87 - - [26/Aug/2013:07:38:59 +0900] "GET /api/premium/brand HTTP/1.1" 200 721 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 
115.137.10.87 - - [26/Aug/2013:07:38:59 +0900] "GET /api/brand/ HTTP/1.1" 200 2510 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 
115.137.10.87 - - [26/Aug/2013:07:39:00 +0900] "GET /api/game/ HTTP/1.1" 200 1402 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 

我可以清楚地看到什么http请求是从什么IP地址发送。 但如果我把用户ID(如$用户ID),该日志,这将是美好的日志,我将能够得到决策良好的统计信息。

如果可能的话,有没有办法做到这一点? 任何意见将非常感激。

日志将是这样的:

115.137.10.87 - - [26/Aug/2013:07:38:52 +0900] "***[USERID]*** GET /api/game/ HTTP/1.1" 200 1402 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 

回答

0

如果使用HTTP基本或摘要验证,则该用户名从HTTP报头得出,并且可以通过在使用%u被插入到日志LogFormat指令在你的apache配置中。如果你的登录系统在头部没有包括用户名(可能),那么我知道的唯一的其他选择是以某种方式设置一个环境变量,然后Apache可以用%{FOOBAR}e写出。见http://httpd.apache.org/docs/2.2/logs.html

否则,你可能会更好从应用程序代码编写出自己的日志文件(或使用应用程序级别的日志库 - Log4j的,或其他)

+0

感谢这么多的快速回复。这将是一个很大的帮助。 – user1942626

+0

我读Apache日志的文章。但我不知道在哪里设置我自己的变量并使用它。找不到示例代码。你可以给我一个例子吗?我担心我的愚蠢尝试会导致系统出现任何问题。 – user1942626

+0

是使用HTTP Basic或摘要式身份验证登录?为了使用%u,它需要。否则,这些是设置环境变量的主要选项:http://httpd.apache.org/docs/2.2/env.html –