не регистрировать определенный шаблон URL для tomcat localhost_access_log - PullRequest
0 голосов
/ 07 мая 2019

Я хотел бы знать, есть ли какой-нибудь способ, которым мы можем сделать условную регистрацию в журналах доступа Apache.AccessLogValve из $ CATALINA_HOME / conf / server.xml

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%{X-Forwarded-For}i %h %l %u %t &quot;%r&quot; %s %b" />
    <Context path="" docBase="/usr/share/tomcat8/webapps/ROOT/www" reloadable="true" crossContext="true"/>

Например: я не хочу регистрировать URL, который передает конфиденциальную информацию / электронную почту / somesensitve информацию.Есть ли способ, которым я могу указать это в server.xml или любым другим способом.

Так мы можем указать в apache httpd https://www.howtoforge.com/setenvif_apache2 SetEnvIf Request_URI "^ / email / token $" dontlog

1 Ответ

0 голосов
/ 08 мая 2019

Решение состоит в том, чтобы использовать атрибут определения условия в Server.xml

<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="logs" 
               prefix="access_log." suffix=".txt" pattern="common" resolveHosts="false" condition="donotLog" />

Определите RequestFilter, реализующий Фильтр

public class RequestFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
    try {
        if ( request instanceof HttpServletRequest){
            HttpServletRequest httpServletRequest = (HttpServletRequest)request;
            String url = getFullURL(httpServletRequest);
            //initialize pattern only once
            if (pattern == null){
                String fPattern = filterConfig.getInitParameter("donotLogPattern");
                LOGGER.info("FilterPattern {}",fPattern);
                pattern = Pattern.compile(fPattern);
            }
            //If find a pttern then set do not log condition
            if (pattern.matcher(url).find()){
                LOGGER.info("Setting donotLog attribute");
                request.setAttribute("donotLog","true");
            }
        }
      ...

Определите этот init-params в web.xml

 <filter>
<filter-name>requestFilter</filter-name>
<filter-class>com.netgear.hms.config.RequestFilter</filter-class>
<init-param>
    <param-name>logParam</param-name>
    <param-value>donotLog</param-value>
</init-param>
<init-param>
    <param-name>donotLogPattern</param-name>
    <param-value>creditCard|passowrd</param-value>
</init-param>
...