logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stuart Yoxall <stu...@optimad.com>
Subject wrong class and method information when logging
Date Thu, 17 Jul 2003 09:09:27 GMT

I am new to using log4j. I want to append the current userid to the output
in the logfile. I am using the following code to store the userid:

public class ThreadProperties {

    public static final long NO_USER_ID_AVAILABLE = -1;

    private static ThreadLocal currentUserID = new ThreadLocal() {
	protected synchronized Object initialValue() {
	 * our initial value will be a null
	 * we do not want to return a default value
	    return new Long( NO_USER_ID_AVAILABLE );

     * Used to set the thread scoped userID variable.
     * @param id int
    public static void setCurrentUserID(long id) {
	* return the userID available through the static userID ThreadLocal
	currentUserID.set( new Long(id) );

    public static long getCurrentUserID() {
	* return the userID available through the static userID ThreadLocal
	return ( (Long) (currentUserID.get()) ).longValue();



My Logger is as follows:

package com.mycompany.util.logger;

import org.apache.log4j.Logger;

public class OptimadLogger{

  public static final String EMPTY_STRING_WITH_SPACE = " ";
  public static final String EMPTY_STRING = "";
  private Logger instanceLogger =null;

  private String getIDString(){
      StringBuffer sb = new StringBuffer();
      sb.append(" [User ID=");
      return sb.toString();

  private void setInstanceLogger(Logger aLogger){
      instanceLogger = aLogger;

 public static OptimadLogger getOptimadLogger(String logger){
    OptimadLogger log = new OptimadLogger();
    return log;

 public void debug(Object ob){
    instanceLogger.debug(getIDString() + ob);

 public void debug(Object ob, Throwable t){
    instanceLogger.debug(getIDString() + ob, t);

/** Other logging methods left out*/

 public boolean isDebugEnabled(){
    return instanceLogger.isDebugEnabled();

The above logs the userid to the logfile but I loose the class and method my
logger was called in. The trace shows:

2003-07-16 15:38:33,165 [DEBUG] OptimadLogger.debug -  [User ID=4] SQL
statement closed

as opposed to :

2003-07-16 15:38:33,165 [DEBUG] MyDAO.myMethod -  [User ID=4] SQL statement

can i tell log4j to record the class that called my logger as opposed to the
logger itself?


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

View raw message