我正在将一些内部系统从Glassfish-3.1.2.2(在Java 1.7上)转换为Glassfish-4.1(在Java 1.8上)。我们需要一个自定义访问日志格式来捕获默认日志格式说明符中不存在的一些数据。
Glassfish-4.1似乎忽略了domain.xml文件中“access-log”元素的格式说明符(以及所有其他自定义设置)。这些配置选项在Glassfish-3.1.2.2中完美运行。
具体来说,请考虑以下工作Glassfish-3.1.2.2系统中的“.... / configs / domain.xml”文件。某些值已被编辑,但实际文本不相关。
<configs>
<config name="server-config">
<http-service access-logging-enabled="true">
<access-log buffer-size-bytes="128000" write-interval-seconds="1" format="'%client.name% %datetime% %request% %status% %response.length% %session.com.redacted.redacted.User% %header.user-agent% %header.X-REDACTED%'"></access-log>
这在Glassfish-3.1.2.2中很有用。但是,在Glassfish-4.1中,设置(格式和写入间隔 - 秒)似乎被忽略(不确定如何测试'buffer-size-bytes')。
我可以在Glassfish-4.1管理控制台中看到自定义访问日志格式字符串:(https://host:4848/) - &gt;配置 - &gt; server-config - &gt; HTTP服务 - &gt;访问记录 - &gt;格式。
我进行了一些实验(都失败了)。
我也将格式字符串放入“default-config”中。这与文档相反(对于GF-3,“default-config”用作为新域创建新配置的模板,并且它不被任何正在运行的域使用)。正如所料,此编辑对实际访问日志文件(服务重启后)没有影响。
我从管理员界面编辑了日志格式字符串。我附加了静态字符串“ABC123TEST”,保存了配置并重新启动了服务器。果然,文字文本“ABC123TEST”出现在domain.xml中的正确位置,但是当写出访问日志文件时它完全被忽略。
错误访问日志文件的示例(为保密而编辑的某些数据):
"1.2.3.4" "NULL-AUTH-USER" "09/Jun/2015:10:59:10 -0600" "GET /logoff-action.do HTTP/1.1" 200 0
更正/期望的访问日志样本:
"1.2.3.4" "09/Jun/2015:11:00:01 -0600" "GET /logoff-action.do;jsessionid=0000000000000000000000000000 HTTP/1.1" 200 0 "REDACTED-USER-NAME" "AwesomeUserAgentStr/1.0" "REDACTED-X-HEADER-VALUE"