0

我正在运行一个带有 siginup/login 过程的网站。我喜欢在用户注册或登录我的网站时插入用户 ID。我的 apache access.log 如下:

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)"

我可以清楚地看到从哪个 ip 地址发送了什么 http 请求。但是如果我把用户ID(例如$userid)放到这个日志中,那将是一个很棒的日志,我将能够得到一个很好的统计信息来做决定。

如果可能的话,有没有办法做到这一点?任何建议将不胜感激。

日志将如下所示:

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)"
4

1 回答 1

0

如果您使用的是 HTTP Basic 或 Digest 身份验证,则用户名来自 HTTP 标头,并且可以通过使用apache 配置%u中的指令插入到日志中。LogFormat如果您的登录系统在标头中不包含用户名(可能),那么我知道的唯一其他选择是以某种方式设置一个环境变量,然后 Apache 可以用%{FOOBAR}e. 见http://httpd.apache.org/docs/2.2/logs.html

否则,您最好从应用程序代码中写出自己的日志文件(或使用应用程序级别的日志库 - Log4j 或其他)。

于 2013-08-25T23:08:33.633 回答