You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-user@tomcat.apache.org by songjae han <so...@yahoo.com> on 2001/06/07 00:07:14 UTC
log tag: using logtag with log4j configuration file
Hi,
This email is a proposal to use <context-param> element of web.xml to pass
log4j configuration parameter to log tag handler.
Background:
Log tag uses BasicConfigurator of log4j and I wanted to use
PropertyConfigurator that will let me configure appenders and categories
using log4j configuration file. To do this, Log tag handler needs a name of
log4j configuration file.
I used <context-param> element of web.xml to pass the config filename to log
tag handler.
a little desc of <context-param> element : lets you define initialization
parameters that are available to all components of the application.
I would be very happy if this(or other implementation which lets me use log
tag with log4j configuration file) be included in log tag.
Below are modified LoggerTag.java file, a portion of web.xml and log4j
config file
Thanks,
SongJae Han
song_jae@yahoo.com
====modified LoggerTag.java==========
package org.apache.taglibs.log;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.ServletContext;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Category;
import org.apache.log4j.PropertyConfigurator;
import java.net.*;
/** Abstract base class for the logging tags which log a message to a
* log4j category.
*
* @author <a href="mailto:joeo@epesh.com">Joseph Ottinger</a>
* @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
*/
public abstract class LoggerTag extends BodyTagSupport {
private static boolean initialized = false;
private void initializeConfigurator() {
// Force log4j to be initialised on Class load...
// XXXX: Is there a better, more deployment descriptor
// way of doing this?
ServletContext context = pageContext.getServletContext();
String log4jConfig = context.getInitParameter("log4j");
if(log4jConfig != null) {
try{
System.out.println("Using properties configurator");
URL configURL = new URL(log4jConfig);
PropertyConfigurator.configure(configURL);
System.out.println("this is the logfile "+log4jConfig);
}catch(MalformedURLException e) {
PropertyConfigurator.configure(log4jConfig);
}
}else{
System.out.println("Using basic configurator");
BasicConfigurator.configure();
}
initialized = true;
}
private String category = "";
private String message;
public void setCategory(String category) {
this.category = category;
}
public void setMessage(String message) {
this.message = message;
}
// Tag interface
//-------------------------------------------------------------------------
public int doStartTag() throws JspException {
if(!initialized){
initializeConfigurator();
log("initializing log4j configurator");
}
if ( message != null ) {
/** Log now as doAfterBody() may not be called for an empty body
tag */
log( message );
return SKIP_BODY;
}
return EVAL_BODY_TAG;
}
public int doAfterBody() throws JspException {
if (message == null) {
log( getBodyContent().getString().trim() );
}
return SKIP_BODY;
}
// Implementation methods
//-------------------------------------------------------------------------
protected Category getCategory() {
return Category.getInstance(category);
}
protected abstract void log( String message );
}
=================================
=======web.xml====================
<web-app>
...
<context-param>
<param-name>log4j</param-name>
<param-value>file:../webapps/log4j.properties</param-value>
</context-param>
...
</web-app>
=================================
======log4j config file=================
log4j.rootCategory=debug, stdout, logFile
log4j.category.com.foo=WARN
#out to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#out to file
log4j.appender.logFile=org.apache.log4j.RollingFileAppender
#tomcat uses bin as current directory when writing log
log4j.appender.logFile.File=../webapps/logtag.txt
log4j.appender.logFile.MaxFileSize=100KB
log4j.appender.logFile.MaxBackupIndex=1
# Pattern to output the caller's file name and line number.
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
=================================
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com