{"id":873,"date":"2018-04-09T17:04:29","date_gmt":"2018-04-10T02:04:29","guid":{"rendered":"\/blog\/?p=873"},"modified":"2023-09-21T09:37:34","modified_gmt":"2023-09-21T00:37:34","slug":"apache-tomcat-log-%ed%95%84%ed%84%b0","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=873","title":{"rendered":"apache-tomcat log \ud544\ud130"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"apache\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n MicroFocus WebInpsect\uc758 apache-tomcat access.log\uc5d0 \ub300\ud55c Crawling \ub85c\uadf8 \uae30\ub85d\uc744\n \ucc28\ub2e8\ud558\uae30 \uc704\ud55c \ud544\ud130 \ubaa8\ub4c8\n\n -\uc791\uc131\uc77c: 2018.04.02.\n -\uc791\uc131\uc790: \uc774\uc874\uc11d (hasu0707@esvali.com)\n*\/\n\n\/**\n\u25a0 \ube4c\ub4dc \ubc29\ubc95\n\nCLASSPATH=%CLASSPATH%;D:\\working\\apache-log4j-2.11.0-bin\\log4j-api-2.11.0.jar;D:\\working\\apache-tomcat-7.0.85\\lib\\servlet-api.jar\njavac -encoding utf-8 WebInspectLogFilter.java\n\n\n\u25a0 \uc801\uc6a9 \ubc29\ubc95\n\n1.class \ud30c\uc77c\uc744 webapps\/&lt;webapp-name>\/WEB-INF\/classes\/ \ubc11\uc5d0 \ubcf5\uc0ac\n\n\n2.conf\/server.xml\uc5d0\uc11c AccessLogValve\uc5d0 condition\uc744 \uc544\ub798\uc640 \uac19\uc774 \ucd94\uac00\ud574 \uc900\ub2e4.\n    &lt;!-- Access log processes all example.\n         Documentation at: \/docs\/config\/valve.html\n         Note: The pattern used is equivalent to using pattern=\"common\" -->\n    &lt;Valve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs\"\n           prefix=\"localhost_access_log.\" suffix=\".txt\"\n           pattern=\"%h %l %u %t &amp;quot;%r&amp;quot; %s %b\"\n           condition=\"WICRAWL\" \/>\n\n\n3.webapps\/&lt;webapp-name>\/WEB-INF\/web.xml\uc5d0 \uc544\ub798\ub97c \uc0bd\uc785\n    &lt;!-- START: Filter for HPE WebInspect blocking logs -->\n    &lt;filter>\n        &lt;filter-name>WebInspectLogFilter&lt;\/filter-name>\n        &lt;filter-class>WebInspectLogFilter&lt;\/filter-class>\n        &lt;init-param>\n            &lt;param-name>wi_ipaddr1&lt;\/param-name>\n            &lt;param-value>172.21.90.48&lt;\/param-value>\n        &lt;\/init-param>\n        &lt;init-param>\n            &lt;param-name>wi_ipaddr2&lt;\/param-name>\n            &lt;param-value>172.21.90.49&lt;\/param-value>\n        &lt;\/init-param>\n    &lt;\/filter>\n    &lt;filter-mapping>\n        &lt;filter-name>WebInspectLogFilter&lt;\/filter-name>\n        &lt;url-pattern>\/*&lt;\/url-pattern>\n    &lt;\/filter-mapping>\n    &lt;!-- END:   Filter for HPE WebInspect blocking logs -->\n\n\n4.webapps\/&lt;webapp-name>\/WEB-INF\/log4j2.xml\uc5d0\uc11c \ub85c\uadf8\ud30c\uc77c \uae30\uc220 \ubd80\ubd84\uc5d0 \uc544\ub798\ub97c \uc0bd\uc785\n    &lt;RollingFile...>\n    ...\n        &lt;!-- START: Filter for HPE WebInspect blocking logs -->\n        &lt;Filters>\n            &lt;ThreadContextMapFilter onMatch=\"DENY\" onMismatch=\"NEUTRAL\">\n                &lt;KeyValuePair key=\"WICRAWL\" value=\"true\"\/>\n            &lt;\/ThreadContextMapFilter>\n        &lt;\/Filters>\n        &lt;!-- END:   Filter for HPE WebInspect blocking logs -->\n    ...\n    &lt;\/RollingFile>\n\n\n\u203b\ucc38\uace0: https:\/\/www.innoq.com\/en\/blog\/per-request-debugging-with-log4j2\/\n*\/\n\nimport org.apache.logging.log4j.ThreadContext;\nimport java.io.*;\nimport javax.servlet.*;\nimport javax.servlet.http.*;\nimport java.io.IOException;\n\npublic final class WebInspectLogFilter implements Filter {\n\n    private FilterConfig config = null;\n    private String wi_ipaddr1 = null;\n    private String wi_ipaddr2 = null;\n    private String keystring = \"WICRAWL\";\n    private String keystring_value = \"true\";\n\n    public void init(FilterConfig filterConfig) throws ServletException {\n        this.config = filterConfig;\n        \/\/config.getServletContext().log(\"Logs capturing started\");\n     }\n\n    \/\/ doFilter \uba54\uc11c\ub4dc \uad6c\ud604\n    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {\n\n        try {\n            \/\/ server.xml\uc5d0\uc11c \ud30c\ub77c\uba54\ud130\ub85c WebInspect \uc11c\ubc84\uc758 \uc544\uc774\ud53c \uc8fc\uc18c\ub97c \uc54c\uc544\ub0b8\ub2e4.\n            \/\/ WebInspect \uc11c\ubc84\uac00 2\ub300 \uc774\ubbc0\ub85c 1,2\ub85c \uad6c\ubd84\n            String remote_ipaddr = request.getRemoteAddr();\n            wi_ipaddr1 = config.getInitParameter(\"wi_ipaddr1\");\n            wi_ipaddr2 = config.getInitParameter(\"wi_ipaddr2\");\n\n            \/\/ WebInspect IP\uc8fc\uc18c\uba74 http header\uc640 log4j2\uc758 ThreadContext\uc5d0 WICRAWL \uc18d\uc131\uc744 \ucd94\uac00\ud55c\ub2e4.\n            if (remote_ipaddr.equals(wi_ipaddr1) || remote_ipaddr.equals(wi_ipaddr2)) {\n                request.setAttribute(keystring, keystring_value);\n                ThreadContext.put(keystring, keystring_value);\n            }\n\n            \/\/ \uc5ec\uae30\uc11c \ubcc0\uacbd\ub41c \uc815\ubcf4\ub97c \uac00\uc9c0\uace0 \ub2e4\uc74c \ud544\ud130\ub85c \ub118\uc5b4\uac04\ub2e4.\n            chain.doFilter(request, response);\n        } finally {\n            \/\/ ThreadContext \uc2a4\ud0dd\uc5d0\uc11c \uc0ad\uc81c\n            ThreadContext.remove(keystring);\n        }\n    }\n\n    public void destroy() {\n        this.config = null;\n        this.wi_ipaddr1 = null;\n        this.wi_ipaddr2 = null;\n    }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[23],"tags":[],"class_list":["post-873","post","type-post","status-publish","format-standard","hentry","category-development_web"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=873"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/873\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}