#
# 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:
  Appenders:
    Console:
      name: "STDOUT"
      PatternLayout:
        ScriptPatternSelector:
          defaultPattern: "%d %p %m%n"
          ScriptRef:
            ref: "SELECTOR_SCRIPT"
          PatternMatch:
            - key: "NoLocation"
              pattern: "[%-5level] %c{1.} %msg%n"
            - key: "Flow"
              pattern: "[%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n"
  Loggers:
    Logger:
      name: "EventLogger"
      ScriptFilter:
        onMatch: "ACCEPT"
        onMismatch: "DENY"
        Script:
          name: "EVENT_LOGGER_FILTER"
          language: "groovy"
          scriptText: |
            if (logEvent.getMarker() != null
                && logEvent.getMarker().isInstanceOf("FLOW")) {
              return true;
            } else if (logEvent.getContextMap().containsKey("UserId")) {
              return true;
            }
            return false;
    Root:
      level: "INFO"
      ScriptFilter:
        onMatch: "ACCEPT"
        onMismatch: "DENY"
        ScriptRef:
          ref: "ROOT_FILTER"
      AppenderRef:
        ref: "STDOUT"
  Scripts:
    Script:
      name: "SELECTOR_SCRIPT"
      language: "javascript"
      scriptText: |
        var result;
        if (logEvent.getLoggerName().equals("JavascriptNoLocation")) {
          result = "NoLocation";
        } else if (logEvent.getMarker() != null
            && logEvent.getMarker().isInstanceOf("FLOW")) {
          result = "Flow";
        }
        result;
    ScriptFile:
      name: "ROOT_FILTER"
      path: "scripts/filter.groovy"
