EMMA Coverage Report (generated Wed Feb 26 21:48:09 GMT 2014)
[all classes][uk.org.simonsite.log4j.appender]

COVERAGE SUMMARY FOR SOURCE FILE [AppendToAppenderCommand.java]

nameclass, %method, %block, %line, %
AppendToAppenderCommand.java100% (1/1)100% (6/6)100% (86/86)100% (18/18)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AppendToAppenderCommand100% (1/1)100% (6/6)100% (86/86)100% (18/18)
AppendToAppenderCommand (ActiveAsynchronousAppenderProperties): void 100% (1/1)100% (9/9)100% (4/4)
execute (Appender, LoggingEvent): void 100% (1/1)100% (64/64)100% (9/9)
hasErrors (): boolean 100% (1/1)100% (3/3)100% (1/1)
resetErrors (): void 100% (1/1)100% (4/4)100% (2/2)
shouldThrow (): boolean 100% (1/1)100% (4/4)100% (1/1)
toString (): String 100% (1/1)100% (2/2)100% (1/1)

1/*
2 * Licensed under the Apache License, Version 2.0 (the "License");
3 * you may not use this file except in compliance with the License.
4 * You may obtain a copy of the License at
5 * 
6 *      http://www.apache.org/licenses/LICENSE-2.0
7 * 
8 * Unless required by applicable law or agreed to in writing, software
9 * distributed under the License is distributed on an "AS IS" BASIS,
10 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 * See the License for the specific language governing permissions and
12 * limitations under the License.
13 */
14package uk.org.simonsite.log4j.appender;
15 
16import org.apache.log4j.Appender;
17import org.apache.log4j.helpers.LogLog;
18import org.apache.log4j.spi.LoggingEvent;
19 
20/**
21 * @author <a href="mailto:simon_park_mail AT yahoo DOT co DOT uk">Simon
22 *         Park</a>
23 * @version 1.2
24 */
25final class AppendToAppenderCommand implements AppenderCommand {
26 
27  private final ActiveAsynchronousAppenderProperties properties;
28 
29  private boolean errors = false;
30 
31  /**
32   * 
33   */
34  AppendToAppenderCommand(final ActiveAsynchronousAppenderProperties properties) {
35    super();
36    this.properties = properties;
37  }
38 
39  /*
40   * (non-Javadoc)
41   * 
42   * @see
43   * uk.org.simonsite.log4j.appender.AppenderCommand#execute(org.apache.log4j.Appender
44   * )
45   */
46  public final void execute(final Appender appender, final LoggingEvent event) {
47    try {
48      appender.doAppend(event);
49    } catch (RuntimeException e) {
50      if (this.shouldThrow()) {
51        throw e;
52      } else {
53        this.errors = true;
54        final String eventInfo = "[FQNOfLoggerClass="
55            + event.getFQNOfLoggerClass() + "][Level=" + event.getLevel()
56            + "][LoggerName=" + event.getLoggerName() + "][ThreadName="
57            + event.getThreadName() + "][Timestamp=" + event.getTimeStamp()
58            + "]";
59        LogLog.warn(Thread.currentThread().getName()
60            + " recovered from fault during LoggingEvent dispatch by appender "
61            + appender.getName() + ", may have lost event: " + eventInfo, e);
62      }
63    }
64  }
65 
66  /*
67   * (non-Javadoc)
68   * 
69   * @see uk.org.simonsite.log4j.appender.AppenderCommand#hasErrors()
70   */
71  public final boolean hasErrors() {
72    return this.errors;
73  }
74 
75  public void resetErrors() {
76    this.errors = false;
77  }
78 
79  public final String toString() {
80    return "AppendToAppenderCommand";
81  }
82 
83  private boolean shouldThrow() {
84    return this.properties.isFailToSync();
85  }
86}

[all classes][uk.org.simonsite.log4j.appender]
EMMA 2.0.5312 (C) Vladimir Roubtsov