| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| ~ Licensed to the Apache Software Foundation (ASF) under one or more |
| ~ contributor license agreements. See the NOTICE file distributed with |
| ~ this work for additional information regarding copyright ownership. |
| ~ The ASF licenses this file to you under the Apache License, Version 2.0 |
| ~ (the "License"); you may not use this file except in compliance with |
| ~ the License. You may obtain a copy of the License at |
| ~ |
| ~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~ |
| ~ Unless required by applicable law or agreed to in writing, software |
| ~ distributed under the License is distributed on an "AS IS" BASIS, |
| ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ~ See the License for the specific language governing permissions and |
| ~ limitations under the License. |
| --> |
| <Configuration xmlns="https://logging.apache.org/xml/ns" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation=" |
| https://logging.apache.org/xml/ns |
| https://logging.apache.org/xml/ns/log4j-config-2.xsd"> |
| <Appenders> |
| <Console name="STDOUT"> |
| <PatternLayout> |
| <ScriptPatternSelector defaultPattern="%d %p %m%n"> |
| <ScriptRef ref="SELECTOR_SCRIPT"/> |
| <PatternMatch key="NoLocation" pattern="[%-5level] %c{1.} %msg%n"/> |
| <PatternMatch key="Flow" |
| pattern="[%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n"/> |
| </ScriptPatternSelector> |
| </PatternLayout> |
| </Console> |
| </Appenders> |
| <Loggers> |
| <Logger name="EventLogger"> |
| <ScriptFilter onMatch="ACCEPT" onMismatch="DENY"> |
| <Script name="EVENT_LOGGER_FILTER" language="groovy"><![CDATA[ |
| if (logEvent.getMarker() != null |
| && logEvent.getMarker().isInstanceOf("FLOW")) { |
| return true; |
| } else if (logEvent.getContextMap().containsKey("UserId")) { |
| return true; |
| } |
| return false; |
| ]]> |
| </Script> |
| </ScriptFilter> |
| </Logger> |
| <Root level="INFO"> |
| <ScriptFilter onMatch="ACCEPT" onMismatch="DENY"> |
| <ScriptRef ref="ROOT_FILTER"/> |
| </ScriptFilter> |
| <AppenderRef ref="STDOUT"/> |
| </Root> |
| </Loggers> |
| <Scripts> |
| <Script name="SELECTOR_SCRIPT" language="javascript"><![CDATA[ |
| var result; |
| if (logEvent.getLoggerName().equals("JavascriptNoLocation")) { |
| result = "NoLocation"; |
| } else if (logEvent.getMarker() != null |
| && logEvent.getMarker().isInstanceOf("FLOW")) { |
| result = "Flow"; |
| } |
| result; |
| ]]> |
| </Script> |
| <ScriptFile name="ROOT_FILTER" path="scripts/filter.groovy"/> |
| </Scripts> |
| </Configuration> |