我有一个环境,其中WSO2IS位于平衡器之后,并且希望客户端IP也可以登录到http_access.log文件之外的文件wso2carbon.log。
答案 0 :(得分:0)
在应用程序日志中我们需要手动解析值以进行记录。您将从请求中获取IP地址。您可以将其添加到Thread local并将其配置为模式布局[5]。
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
您可以使用请求标题“X-Forwarded-For”[1]。
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${carbon.home}/repository/logs"
prefix="http_access_management_console_" suffix=".log"
pattern="%{X-Forwarded-For}i %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"" />
[2]
[1]。https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Proxies_Support [2]。https://docs.wso2.com/display/ESB490/Access+Logs
[3]。http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access_Log_Valve
[4]。http://www.techstacks.com/howto/configure-access-logging-in-tomcat.html [5]。https://logging.apache.org/log4j/2.x/manual/thread-context.html
答案 1 :(得分:0)
如果您可以以编程方式获取用户的IP,则可以编写用户操作事件监听器[1]并打印日志。样本在[2]中。
[1] http://tharindue.blogspot.com/2016/08/user-operation-event-listener-in-wso2.html [2] http://tharindue.blogspot.com/2016/08/writing-user-operation-event-listener.html