下面列出了org.apache.log4j.spi.Filter#ACCEPT 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 覆写doAppend, 去掉closed的log日志
* @param event
*/
@Override
public synchronized void doAppend(LoggingEvent event) {
if (closed) {
return;
}
if (!isAsSevereAsThreshold(event.getLevel())) {
return;
}
Filter f = this.headFilter;
FILTER_LOOP:
while(f != null) {
switch(f.decide(event)) {
case Filter.DENY: return;
case Filter.ACCEPT: break FILTER_LOOP;
case Filter.NEUTRAL: f = f.getNext();
}
}
this.append(event);
}
/**
* This method performs threshold checks and invokes filters before
* delegating actual logging to the subclasses specific {@link
* AppenderSkeleton#append} method.
* */
public
synchronized
void doAppend(LoggingEvent event) {
if(closed) {
LogLog.error("Attempted to append to closed appender named ["+name+"].");
return;
}
if(!isAsSevereAsThreshold(event.getLevel())) {
return;
}
Filter f = this.headFilter;
FILTER_LOOP:
while(f != null) {
switch(f.decide(event)) {
case Filter.DENY: return;
case Filter.ACCEPT: break FILTER_LOOP;
case Filter.NEUTRAL: f = f.getNext();
}
}
this.append(event);
}
/**
Return the decision of this filter.
Returns {@link Filter#NEUTRAL} if the <b>LevelToMatch</b> option
is not set or if there is not match. Otherwise, if there is a
match, then the returned decision is {@link Filter#ACCEPT} if the
<b>AcceptOnMatch</b> property is set to <code>true</code>. The
returned decision is {@link Filter#DENY} if the
<b>AcceptOnMatch</b> property is set to false.
*/
public
int decide(LoggingEvent event) {
if(this.levelToMatch == null) {
return Filter.NEUTRAL;
}
boolean matchOccured = false;
if(this.levelToMatch.equals(event.getLevel())) {
matchOccured = true;
}
if(matchOccured) {
if(this.acceptOnMatch)
return Filter.ACCEPT;
else
return Filter.DENY;
} else {
return Filter.NEUTRAL;
}
}
/**
Returns {@link Filter#NEUTRAL} is there is no string match.
*/
public
int decide(LoggingEvent event) {
String msg = event.getRenderedMessage();
if(msg == null || stringToMatch == null)
return Filter.NEUTRAL;
if( msg.indexOf(stringToMatch) == -1 ) {
return Filter.NEUTRAL;
} else { // we've got a match
if(acceptOnMatch) {
return Filter.ACCEPT;
} else {
return Filter.DENY;
}
}
}
@Override
public Result filter(LogEvent event) {
LoggingEvent loggingEvent = new LogEventAdapter(event);
Filter next = filter;
while (next != null) {
switch (filter.decide(loggingEvent)) {
case Filter.ACCEPT:
return Result.ACCEPT;
case Filter.DENY:
return Result.DENY;
default:
}
next = filter.getNext();
}
return Result.NEUTRAL;
}
@Override
public Result filter(LogEvent event) {
LoggingEvent loggingEvent = new LogEventAdapter(event);
Filter next = filter;
while (next != null) {
switch (filter.decide(loggingEvent)) {
case Filter.ACCEPT:
return Result.ACCEPT;
case Filter.DENY:
return Result.DENY;
default:
}
next = filter.getNext();
}
return Result.NEUTRAL;
}
@Override
public int decide (LoggingEvent e) {
Level l = e.getLevel ();
if ((l == Level.DEBUG) || (l == Level.INFO) || (l == Level.WARN) || (l == Level.ERROR) || (l == Level.FATAL)) {
return Filter.ACCEPT;
}
return Filter.NEUTRAL;
}
@Override
public int decide (LoggingEvent e) {
Level l = e.getLevel ();
if ((l == Level.WARN) || (l == Level.ERROR) || (l == Level.FATAL)) {
return Filter.ACCEPT;
}
return Filter.NEUTRAL;
}
/**
Return the decision of this filter.
*/
public
int decide(LoggingEvent event) {
if(this.levelMin != null) {
if (event.getLevel().isGreaterOrEqual(levelMin) == false) {
// level of event is less than minimum
return Filter.DENY;
}
}
if(this.levelMax != null) {
if (event.getLevel().toInt() > levelMax.toInt()) {
// level of event is greater than maximum
// Alas, there is no Level.isGreater method. and using
// a combo of isGreaterOrEqual && !Equal seems worse than
// checking the int values of the level objects..
return Filter.DENY;
}
}
if (acceptOnMatch) {
// this filter set up to bypass later filters and always return
// accept if level in range
return Filter.ACCEPT;
}
else {
// event is ok for this filter; allow later filters to have a look..
return Filter.NEUTRAL;
}
}
/**
* {@inheritDoc}
*/
@Override
public int decide(final LoggingEvent event) {
// final String loggerName = event.getLoggerName();
// if (loggerName == null || loggerName.startsWith(name)) {
// return Filter.DENY;
// }
return Filter.ACCEPT;
}
@Override
public int decide(LoggingEvent event) {
Object oRunId = event.getMDC(LogUtils.MDC_RUNID_KEY);
if (!(oRunId instanceof Long))
return Filter.DENY;
Long rId = (Long)oRunId;
if (this.runId != rId.longValue())
return Filter.DENY;
else {
if (event.getLevel().isGreaterOrEqual(logLevel))
return Filter.ACCEPT;
else
return Filter.DENY;
}
}