View Javadoc
1   /**
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
4    *
5    * This program and the accompanying materials are dual-licensed under
6    * either the terms of the Eclipse Public License v1.0 as published by
7    * the Eclipse Foundation
8    *
9    *   or (per the licensee's choosing)
10   *
11   * under the terms of the GNU Lesser General Public License version 2.1
12   * as published by the Free Software Foundation.
13   */
14  package ch.qos.logback.core.filter;
15  
16  import ch.qos.logback.core.spi.ContextAwareBase;
17  import ch.qos.logback.core.spi.FilterReply;
18  import ch.qos.logback.core.spi.LifeCycle;
19  
20  /**
21   * Users should extend this class to implement customized event filtering.
22   * 
23   * <p>
24   * We suggest that you first try to use the built-in rules before rushing to
25   * write your own custom filters.
26   * 
27   * <p>
28   * For more information about filters, please refer to the online manual at
29   * http://logback.qos.ch/manual/filters.html
30   * 
31   * @author Ceki G&uuml;lc&uuml;
32   */
33  public abstract class Filter<E> extends ContextAwareBase implements LifeCycle {
34  
35      private String name;
36  
37      boolean start = false;
38  
39      public void start() {
40          this.start = true;
41      }
42  
43      public boolean isStarted() {
44          return this.start;
45      }
46  
47      public void stop() {
48          this.start = false;
49      }
50  
51      /**
52       * If the decision is <code>{@link FilterReply#DENY}</code>, then the event will
53       * be dropped. If the decision is <code>{@link FilterReply#NEUTRAL}</code>, then
54       * the next filter, if any, will be invoked. If the decision is
55       * <code>{@link FilterReply#ACCEPT}</code> then the event will be logged without
56       * consulting with other filters in the chain.
57       * 
58       * @param event The event to decide upon.
59       */
60      public abstract FilterReply decide(E event);
61  
62      public String getName() {
63          return name;
64      }
65  
66      public void setName(String name) {
67          this.name = name;
68      }
69  }