ceki 01/04/20 10:38:32
Modified: contribs CONTENTS
Added: contribs/LeosLiterak TempFileAppender.java mail
Log:
Added LeosLiterak's TempFileAppender.java
Revision Changes Path
1.4 +9 -2 jakarta-log4j/contribs/CONTENTS
Index: CONTENTS
===================================================================
RCS file: /home/cvs/jakarta-log4j/contribs/CONTENTS,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CONTENTS 2001/04/20 17:32:44 1.3
+++ CONTENTS 2001/04/20 17:38:23 1.4
@@ -1,10 +1,10 @@
----------------------------------------------------------------------
WARNING: The contents of the contribs/ directory is not guaranteed to
-work properly. Some files might even not compile.
+work properly. Some files might not even compile.
----------------------------------------------------------------------
-Each directory corresponds to the name of an author containinghis/her
+Each directory corresponds to the name of an author containing his/her
contributions.
@@ -33,6 +33,13 @@
Allows the user to divert System.out and System.err to log4j.
+LeosLiterak/
+===========
+
+ TempFileAppender.java
+
+ TempFileAppender creates new unique file for each logging statement.
+
MarkDouglas/
===========
1.1 jakarta-log4j/contribs/LeosLiterak/TempFileAppender.java
Index: TempFileAppender.java
===================================================================
package org.apache.log4j;
import java.io.File;
import java.io.Writer;
import java.io.FileWriter;
import java.io.BufferedWriter;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.helpers.OptionConverter;
import org.apache.log4j.spi.ErrorHandler;
/**
TempFileAppender creates new unique file for each logging statement.
@author <a HREF="mailto:[EMAIL PROTECTED]">Leos Literak</a>
@author Ceki Gülcü
*/
public class TempFileAppender extends AppenderSkeleton {
/**
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 <b>Path</b>. java.io.tmpdir directory
will be used, if ommited.
*/
static final public String PATH_OPTION = "Path";
/**
The default path is actual directory.
*/
protected String path = null;
/**
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 <b>Prefix</b>.
*/
static final public String PREFIX_OPTION = "Prefix";
/**
The default path is actual directory.
*/
protected String prefix = "l4j_";
/**
A string constant used in naming the option for setting the
suffix of the log files. Current value of this string constant
is <b>Suffix</b>.
*/
static final public String SUFFIX_OPTION = "Suffix";
/**
The default path is actual directory.
*/
protected String suffix = ".tmp";
/**
Default dir
*/
protected File dir = null;
/**
The default constructor simply calls its parent's constructor.
*/
public TempFileAppender() {
super();
}
/**
Retuns the option names for this component
*/
public String[] getOptionStrings() {
return OptionConverter.concatanateArrays(super.getOptionStrings(),
new String[] {PATH_OPTION,PREFIX_OPTION,SUFFIX_OPTION});
}
/**
Set TempFileAppender specific options.
The recognized options are <b>Path</b>, <b>Prefix</b> and <b>Suffix</b>,
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.
*/
public void setOption(String key, String value) {
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);
}
}
}
/**
This method is called by {@link AppenderSkeleton#doAppend}
method.
<p>Whenever this method is called, new unique file is created
with specified prefix and suffix. The file is closed afterwards.
<p>The format of the output will depend on this appender's
layout.
*/
public void append(LoggingEvent event) {
if(!checkEntryConditions()) {
return;
}
subAppend(event);
}
/**
This method determines if there is a sense in attempting to append.
*/
protected boolean checkEntryConditions() {
return true;
}
/**
This method does actual writing
*/
protected void subAppend(LoggingEvent event) {
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);
}
}
public boolean requiresLayout() {
return false;
}
public void close() {
/* nothing to do */
}
}
/*
* @author $Author: ceki $
* @version $Revision: 1.1 $
* @since $Date: 2001/04/20 17:38:31 $
*
* $Log: TempFileAppender.java,v $
* Revision 1.1 2001/04/20 17:38:31 ceki
*
* Added LeosLiterak's TempFileAppender.java
*
*/
1.1 jakarta-log4j/contribs/LeosLiterak/mail
Index: mail
===================================================================
To: [EMAIL PROTECTED]
Subject: TempFileAppender
Hi Ceki,
I have created one small Appender, which puts each
logging statement into separate file. We use it
for storing incomming messages into second process'es
spool directory. If you like it, please include it
into Log4j with APL license.
Usage:
log4j.appender.A1=org.apache.log4j.TempFileAppender
log4j.appender.A1.Path=spool_dir
log4j.appender.A1.Prefix=out_
log4j.appender.A1.Suffix=.msg
Leo
-----------------------------------------------------
Leos Literak
Software Engineer
12snap s.r.o.
Pstrossova 24
110 00 Praha 1
Czech Republic
mobile: ?605-849-087
phone: ?2-21-970-239
fax: ?2-21-970-241
e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]