Revision: 4709
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at January 17, 2008 03:41 by narkisr
                            
                            Updated Code
import com.alphacsp.common.log.Log;
import org.apache.log4j.Category;
import org.apache.log4j.FileAppender;
import org.apache.log4j.AppenderSkeleton;
import java.lang.reflect.Field;
import java.util.Enumeration;
public class FileAppenderManipulation {
    public void setAppenderFilenameForLogger(Log log, String filename, String appenderName) {
        try {
            Category category = getCategory(log);
            final FileAppender fileAppender = (FileAppender) locateAppender(category, appenderName);
            fileAppender.setFile(filename);
            fileAppender.activateOptions();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
    private AppenderSkeleton locateAppender(Category category, String name) {
        do {
            final Enumeration appenders = category.getAllAppenders();
            while (appenders.hasMoreElements()) {
                AppenderSkeleton appenderSkeleton = (AppenderSkeleton) appenders.nextElement();
                if (appenderSkeleton.getName().equals(name)) {
                    return appenderSkeleton;
                }
            }
        } while ((category = category.getParent()) != null);
        throw new RuntimeException("The requested appender dosn't exists!");
    }
    private Category getCategory(Log log) throws NoSuchFieldException, IllegalAccessException {
        Field field = log.getClass().getDeclaredField("category");
        field.setAccessible(true);
        Category category = (Category) field.get(log);
        return category;
    }
}
                                
                            Revision: 4708
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at January 17, 2008 03:00 by narkisr
                            
                            Updated Code
public static void setAppenderForLogger(Log log, String filename) {
		try {
			Field field = log.getClass().getDeclaredField("category");
			field.setAccessible(true);
			Category category = (Category) field.get(log);
			FileAppender fileAppender = (FileAppender) category.getAppender("AppenderName");
			fileAppender.setFile(filename);
			fileAppender.activateOptions();
		} catch (NoSuchFieldException e) {
                  e.printStackTrace();
		} catch (IllegalAccessException e) {
                  e.printStackTrace();
		}
	}
                                
                            Revision: 4707
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at January 17, 2008 02:59 by narkisr
                            
                            Initial Code
public static void setAppenderForLogger(Log log, String filename) {
		try {
			Field field = log.getClass().getDeclaredField("category");
			field.setAccessible(true);
			Category category = (Category) field.get(log);
			FileAppender fileAppender = (FileAppender) category.getAppender("F2");
			fileAppender.setFile(filename);
			fileAppender.activateOptions();
		} catch (NoSuchFieldException e) {
           e.printStackTrace();
		} catch (IllegalAccessException e) {
           e.printStackTrace();
		}
	}
                                Initial URL
Initial Description
Initial Title
Setting file appender log path on runtime
Initial Tags
java
Initial Language
Java