【发布时间】:2010-10-26 02:41:51
【问题描述】:
以下是三个日志示例:
127.0.0.1 - - [17/Sep/2010:14:03:07 +0800] "GET /docs/logging.html HTTP/1.1" 200 24040 "http://localhost:8000/docs/manager-howto.html " "Mozilla/4.0 (兼容;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 2.0.50727)" 0:0:0:0:0:0:0:1 - - [26/Oct/2010:09:53:30 +0800] "GET /docs/images/tomcat.gif HTTP/1.1" 200 1934 "http ://localhost:8000/docs/" "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8" 0:0:0:0:0:0:0:1 - - [26/Oct/2010:09:53:30 +0800] “GET /docs/images/asf-logo.gif HTTP/1.1”200 7279 "http://localhost:8000/docs/" "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"第一个是正确的。但是第二个和第三个的IP都是IPv6格式的,如何避免呢?
【问题讨论】:
-
为什么要禁用它?它准确地反映了与 Tomcat 服务器的连接是如何启动的。如果您有一些解释日志的工具,则应更新该工具以考虑 IPv6,或者您应该在允许该工具读取日志之前对日志进行一些翻译(例如,查找所有出现的
0:0:0:0:0:0:0:1,并且替换为等效的 IPv4,127.0.0.1。但是,如果任何其他主机连接(非本地主机),您将无法进行此转换。 -
我可以翻译一下吗?从 ipv6 到 ipv4?
-
在我看来,您基本上有 4 个选项:(1) 不要监听 IPv6 端口(在启动时告诉 Java 只使用 IPv4),(2) 指示您的浏览器(看起来像 Firefox ) 禁用 IPv6,(3) 调整解释日志的方式以考虑 IPv6,或 (4) 在解释日志之前将日志中的所有 IPv6 地址转换为其 IPv4 等效地址。需要注意的是 (4) 仅适用于简单的 IPv6 地址,例如 ::1。
-
但是如果我在tomcat中禁用了ipv6地址,那么使用ipv6的客户端就不会记录在日志文件中了,不是吗?
-
你不能同时拥有它。如果您希望人们能够使用 IPv6 连接,您将必须能够使用 IPv6 格式的日志条目。如果是这种情况,您必须更新您的工具以了解 IPv6 地址。