FileDocCategorySizeDatePackage
TempFileAppender.javaAPI DocApache log4j 1.2.155673Sat Aug 25 00:09:36 BST 2007None

TempFileAppender

public class TempFileAppender extends AppenderSkeleton
TempFileAppender creates new unique file for each logging statement.
author
Leos Literak
author
Ceki Gülcü

Fields Summary
public static final String
PATH_OPTION
A string constant used in naming the option for setting the directory where the log files will be created. Current value of this string constant is Path. java.io.tmpdir directory will be used, if ommited.
protected String
path
The default path is actual directory.
public static final String
PREFIX_OPTION
A string constant used in naming the option for setting the prefix of the log files. It has to have at least 3 characters! Current value of this string constant is Prefix.
protected String
prefix
The default path is actual directory.
public static final String
SUFFIX_OPTION
A string constant used in naming the option for setting the suffix of the log files. Current value of this string constant is Suffix.
protected String
suffix
The default path is actual directory.
protected File
dir
Default dir
Constructors Summary
public TempFileAppender()
The default constructor simply calls its parent's constructor.





                 
    
      super();
  
Methods Summary
public voidappend(org.apache.log4j.spi.LoggingEvent event)
This method is called by {@link AppenderSkeleton#doAppend} method.

Whenever this method is called, new unique file is created with specified prefix and suffix. The file is closed afterwards.

The format of the output will depend on this appender's layout.

 
      if(!checkEntryConditions()) {
          return;
      }
      subAppend(event);
  
protected booleancheckEntryConditions()
This method determines if there is a sense in attempting to append.

      return true;
  
public voidclose()

  /* nothing to do */
  
public java.lang.String[]getOptionStrings()
Retuns the option names for this component

      return OptionConverter.concatanateArrays(super.getOptionStrings(),
                 new String[] {PATH_OPTION,PREFIX_OPTION,SUFFIX_OPTION});
  
public booleanrequiresLayout()

      return false;
  
public voidsetOption(java.lang.String key, java.lang.String value)
Set TempFileAppender specific options. The recognized options are Path, Prefix and Suffix, i.e. the values of the string constants {@link #PATH_OPTION}, {@link #PREFIX_OPTION} and respectively {@link #SUFFIX_OPTION}. The options of the super class {@link AppenderSkeleton} are also recognized.

      super.setOption(key, value);
      if(key.equalsIgnoreCase(PATH_OPTION)) {
	  path = value;
	  if(path==null) {
              errorHandler.error("Path cannot be empty!",null,0);
	  }

	  dir = new File(path);
	  if(!(dir.exists() && dir.isDirectory() && dir.canWrite())) {
              errorHandler.error("Cannot write to directory " + path + "!",null,0);
	  }
      }
      else if(key.equalsIgnoreCase(PREFIX_OPTION)) {
          if(value!=null && value.length()>=3) {
	      prefix = value;
	  } else {
              errorHandler.error("Prefix cannot be shorter than 3 characters!",
	                         null,0);
	  }
      }
      else if(key.equalsIgnoreCase(SUFFIX_OPTION)) {
          if(value!=null && value.length()>=1) {
	      suffix = value;
	  } else {
              errorHandler.error("Suffix cannot be empty!",null,0);
	  }
      }
  
protected voidsubAppend(org.apache.log4j.spi.LoggingEvent event)
This method does actual writing

      try {
          File tmp = File.createTempFile(prefix,suffix,dir);
	  Writer out = new BufferedWriter(new FileWriter(tmp));
	  out.write(event.message);
	  out.close();
 /* this Appender is not supposed to be used for logging of Exceptions */
      } catch (Exception e) {
          errorHandler.error("Error during creation of temporary File!",e,1);
      }