You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Ceki Gülcü <cg...@qos.ch> on 2001/04/20 15:19:56 UTC

Fwd: TempFileAppender



Leos' contribution is at the bottom of this mail. It was sent directly to me and I have not rejected it by any means. I just don't understand why anyone would want use it. Anyone care to explain? Leos? 

In any case, it should have been placed under the contribs/ directory of the log4j distribution. My fault there. Regards, Ceki 

>Delivered-To: urba-cgu@urbanet.ch
>Delivered-To: ceki@locus.apache.org
>Delivered-To: apmail-ceki@apache.org
>Sender: literakl@greensnapper3.sw.12snap.com
>Date: Thu, 25 Jan 2001 10:14:33 +0100
>From: Leos Literak <Le...@12snap.com>
>Organization: 12snap.com
>X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.14-5.0 i686)
>X-Accept-Language: en
>To: ceki@apache.org
>Subject: TempFileAppender
>X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N
>
>
>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:         +420-605-849-087
>phone:  +420-2-21-970-239
>fax:    +420-2-21-970-241
>e-mail: leos.literak@12snap.com


Here is the file:

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:leos.literak@12snap.com">Leos Literak</a>
   @author Ceki G&uuml;lc&uuml;
 
*/
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: literakl $
 * @version $Revision: 1.1 $
 * @since $Date: 2001/01/25 10:30:14 $
 *
 * $Log: TempFileAppender.java,v $
*/



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org


Re: Fwd: TempFileAppender

Posted by Leos Literak <Le...@12snap.com>.
Hi,

> impression that the TempFileAppender is not a general purpose extension
> to log4j. However, as you have probably noticed, it is now under

Ok, I agree.

> contribs/ directory in log4j 1.1b4 distribution. I am however -1 on
> including TempFileAppender in the officially maintained part of the
> log4j package.

that's not problem for me. I've just thought, it may be useful for
someone else. And have you heard Richard Stallman, that commercial
firms uses Open Source software, but they don't return anything to 
community? Not everyone is dealing this way, as Richard thinks ..

Best regards
	
	Leo

-- 
-----------------------------------------------------
Leos Literak
Software Engineer

12snap s.r.o.
Pstrossova 24
110 00 Praha 1
Czech Republic

mobile: +420-605-849-087
phone:  +420-2-21-970-239
fax:    +420-2-21-970-241
e-mail: leos.literak@12snap.com

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org


Re: Fwd: TempFileAppender

Posted by Mathias Bogaert <pa...@pandora.be>.
IMHO this appender would not be very useful or add a nifty feature for
regular logging tasks.

-1

Regards,
Mathias

----- Original Message -----
From: "Ceki Gülcü" <cg...@qos.ch>
To: "LOG4J Developers Mailing List" <lo...@jakarta.apache.org>
Sent: Sunday, April 22, 2001 1:09 PM
Subject: Re: Fwd: TempFileAppender



Hi Leos,

At 12:37 22.04.2001 +0200, you wrote:
>Hi all,
>
>sorry that my response took so much time, but you all know that
>deadlines!

Sure.

>Generally this appender is useful for file based communication
>with legacy applications, that you can't modify to something
>more clever (like JMS, socket or database).
>
>There are applications, which periodically search some spool
>directory, take any file, process it and finally delete it.
>
>I decided to use log4j for storing incoming sms, because it is
>very flexible tool. First of all I stored them into file using
>FileAppender. But then my boss decided, that each sms must be
>stored in separate file (so it can be grabbed by other processes).
>My decision was to create new appender, which will place each
>logging statement into separate file. And this is TempFileAppender.
>
>The best of log4j is, that if he decides to send it over email,
>JMS or store it as record in database, I can say OK and just modify
>configuration file!

Talk about an unexpected use of log4j. You are using it as a communication
tool. That is fine and very flattering but enforces my impression that the
TempFileAppender is not a general purpose extension to log4j. However, as
you have probably noticed, it is now under contribs/ directory in log4j
1.1b4 distribution. I am however -1 on including TempFileAppender in the
officially maintained part of the log4j package.

If you think this is unreasonable, you can try to convince the other
committers to vote otherwise. I am disposed to change my vote to 0, but only
if you can find just one other committer to sustain the motion. Best
regards, Ceki




>        Leo
>
>
>Ceki Gülcü wrote:
>>
>> Leos' contribution is at the bottom of this mail. It was sent directly
>> to me and I have not rejected it by any means. I just don't understand
>> why anyone would want use it. Anyone care to explain? Leos?
>>
>> In any case, it should have been placed under the contribs/ directory of
>> the log4j distribution. My fault there. Regards, Ceki
>>
>
>
>--
>-----------------------------------------------------
>Leos Literak
>Software Engineer
>
>12snap s.r.o.
>Pstrossova 24
>110 00 Praha 1
>Czech Republic
>
>mobile: +420-605-849-087
>phone:  +420-2-21-970-239
>fax:    +420-2-21-970-241
>e-mail: leos.literak@12snap.com
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-dev-help@jakarta.apache.org

--
Ceki Gülcü


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org


Re: Fwd: TempFileAppender

Posted by Ceki Gülcü <cg...@qos.ch>.
Hi Leos,

At 12:37 22.04.2001 +0200, you wrote:
>Hi all,
>
>sorry that my response took so much time, but you all know that
>deadlines!

Sure.

>Generally this appender is useful for file based communication
>with legacy applications, that you can't modify to something
>more clever (like JMS, socket or database).
>
>There are applications, which periodically search some spool
>directory, take any file, process it and finally delete it.
>
>I decided to use log4j for storing incoming sms, because it is
>very flexible tool. First of all I stored them into file using
>FileAppender. But then my boss decided, that each sms must be 
>stored in separate file (so it can be grabbed by other processes).
>My decision was to create new appender, which will place each
>logging statement into separate file. And this is TempFileAppender.
>
>The best of log4j is, that if he decides to send it over email,
>JMS or store it as record in database, I can say OK and just modify
>configuration file!

Talk about an unexpected use of log4j. You are using it as a communication tool. That is fine and very flattering but enforces my impression that the TempFileAppender is not a general purpose extension to log4j. However, as you have probably noticed, it is now under contribs/ directory in log4j 1.1b4 distribution. I am however -1 on including TempFileAppender in the officially maintained part of the log4j package.

If you think this is unreasonable, you can try to convince the other committers to vote otherwise. I am disposed to change my vote to 0, but only if you can find just one other committer to sustain the motion. Best regards, Ceki      




>        Leo
>
>
>Ceki Gülcü wrote:
>> 
>> Leos' contribution is at the bottom of this mail. It was sent directly
>> to me and I have not rejected it by any means. I just don't understand
>> why anyone would want use it. Anyone care to explain? Leos?
>> 
>> In any case, it should have been placed under the contribs/ directory of
>> the log4j distribution. My fault there. Regards, Ceki
>> 
>
>
>-- 
>-----------------------------------------------------
>Leos Literak
>Software Engineer
>
>12snap s.r.o.
>Pstrossova 24
>110 00 Praha 1
>Czech Republic
>
>mobile: +420-605-849-087
>phone:  +420-2-21-970-239
>fax:    +420-2-21-970-241
>e-mail: leos.literak@12snap.com
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-dev-help@jakarta.apache.org

--
Ceki Gülcü


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org


Re: Fwd: TempFileAppender

Posted by Leos Literak <Le...@12snap.com>.
Hi all,

sorry that my response took so much time, but you all know that
deadlines!

Generally this appender is useful for file based communication
with legacy applications, that you can't modify to something
more clever (like JMS, socket or database).

There are applications, which periodically search some spool
directory, take any file, process it and finally delete it.

I decided to use log4j for storing incoming sms, because it is
very flexible tool. First of all I stored them into file using
FileAppender. But then my boss decided, that each sms must be 
stored in separate file (so it can be grabbed by other processes).
My decision was to create new appender, which will place each
logging statement into separate file. And this is TempFileAppender.

The best of log4j is, that if he decides to send it over email,
JMS or store it as record in database, I can say OK and just modify
configuration file!


	Leo


Ceki Gülcü wrote:
> 
> Leos' contribution is at the bottom of this mail. It was sent directly
> to me and I have not rejected it by any means. I just don't understand
> why anyone would want use it. Anyone care to explain? Leos?
> 
> In any case, it should have been placed under the contribs/ directory of
> the log4j distribution. My fault there. Regards, Ceki
> 


-- 
-----------------------------------------------------
Leos Literak
Software Engineer

12snap s.r.o.
Pstrossova 24
110 00 Praha 1
Czech Republic

mobile: +420-605-849-087
phone:  +420-2-21-970-239
fax:    +420-2-21-970-241
e-mail: leos.literak@12snap.com

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org