Standalone TCA with EELF Logger
[dcaegen2/analytics/tca-gen2.git] / eelf-logger / eelf-logger-logback-impl / src / main / java / org / onap / dcae / utils / eelf / logger / logback / filter / MarkerFilter.java
1 /*
2  * ================================================================================
3  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * ============LICENSE_END=========================================================
17  *
18  */
19
20 package org.onap.dcae.utils.eelf.logger.logback.filter;
21
22 import ch.qos.logback.classic.spi.ILoggingEvent;
23 import ch.qos.logback.core.filter.AbstractMatcherFilter;
24 import ch.qos.logback.core.spi.FilterReply;
25 import org.slf4j.Marker;
26 import org.slf4j.MarkerFactory;
27
28 import java.util.HashSet;
29 import java.util.Set;
30
31 /**
32  * Logback Marker filter
33  *
34  * @author Rajiv Singla
35  */
36 public class MarkerFilter extends AbstractMatcherFilter<ILoggingEvent> {
37
38     private String markersString;
39     private Set<Marker> markersToAccept = new HashSet<>();
40
41     @Override
42     public FilterReply decide(final ILoggingEvent event) {
43
44         if (!isStarted()) {
45             return FilterReply.NEUTRAL;
46         }
47
48         if (markersToAccept.contains(event.getMarker())) {
49             return onMatch;
50         } else {
51             return onMismatch;
52         }
53     }
54
55     public void setMarkers(String markersString) {
56         this.markersString = markersString;
57     }
58
59
60     public void start() {
61
62         if (markersString != null && markersString.trim().split(",").length > 0) {
63
64             final String[] markerStrings = markersString.trim().split(",");
65             for (String markerString : markerStrings) {
66                 markersToAccept.add(MarkerFactory.getMarker(markerString.trim()));
67             }
68             super.start();
69         }
70     }
71 }