View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  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   */
    17
    18  package org.apache.log4j.helpers;
    19
    20  import java.io.Writer;
    21  import java.io.FilterWriter;
    22  import java.io.IOException;
    23  import org.apache.log4j.spi.ErrorHandler;
    24  import org.apache.log4j.spi.ErrorCode;
    25
    26
    27  /***
    28     QuietWriter does not throw exceptions when things go
    29     wrong. Instead, it delegates error handling to its {@link ErrorHandler}.
    30
    31     @author Ceki G&uuml;lc&uuml;
    32
    33     @since 0.7.3
    34  */
    35  public class QuietWriter extends FilterWriter {
    36
    37    protected ErrorHandler errorHandler;
    38
    39    public
    40    QuietWriter(Writer writer, ErrorHandler errorHandler) {
    41      super(writer);
    42      setErrorHandler(errorHandler);
    43    }
    44
    45    public
    46    void write(String string) {
    47      try {
    48        out.write(string);
    49      } catch(IOException e) {
    50        errorHandler.error("Failed to write ["+string+"].", e,
    51  			 ErrorCode.WRITE_FAILURE);
    52      }
    53    }
    54
    55    public
    56    void flush() {
    57      try {
    58        out.flush();
    59      } catch(IOException e) {
    60        errorHandler.error("Failed to flush writer,", e,
    61  			 ErrorCode.FLUSH_FAILURE);
    62      }
    63    }
    64
    65
    66    public
    67    void setErrorHandler(ErrorHandler eh) {
    68      if(eh == null) {
    69        // This is a programming error on the part of the enclosing appender.
    70        throw new IllegalArgumentException("Attempted to set null ErrorHandler.");
    71      } else {
    72        this.errorHandler = eh;
    73      }
    74    }
    75  }