[prev in list] [next in list] [prev in thread] [next in thread]
List: jboss-user
Subject: [JBoss-user] [Beginners Corner] - Logging problems with log4j
From: chuckharris <nukes () jboss ! org>
Date: 2004-04-30 20:45:13
Message-ID: 31855154.1083357913460.JavaMail.root () nukes ! jboss ! org
[Download RAW message or body]
I have migrated an application from an jboss2.4.1_tomcat3.2.3 to jb3.2.2. Logging is \
via log4j and I am trying to integrate with the version that is used by jb3.2.2. I \
have a Logger.java (at end) class that allowed logging to occur from within jboss \
and when the class is run from the commandline to test. For jboss3.2.2, I needed to \
comment several lines to even allow jboss to start. Each class calls an initializer \
(at end) and then the Logger method addLoggingForClass(String pClassName) is \
called. Commented lines:
PropertyConfigurator.configure(m_configProps) and
Category acat = getCategory(pClassName);
m_categories.put(pClassName,acat);
acat.log(pClassName, Priority.INFO, "Setting up Logging for " + pClassName, null);
since it caused error :
ERROR: invalid console appender config detected, console stream is looping
I believe the original developer used examples from the original version of log4j.
By commenting these lines, my logging is displayed in the console and a rolling file.
If I run a class from the commandline rather than from within jboss, there is no \
logging at all. I tried to use DOMConfigurator dc =new DOMConfigurator();
dc.configure("/packages/jboss-3.2.2/server/default/conf/log4j.xml");
in the Logger constructor but that caused the same error as above.
I would like logging to work however the class is run, either from within jboss or \
from the commandline. How do I get logging to work from the command line but still \
allow the logging to continue working when from within jboss?
import java.util.Properties;
| import org.apache.log4j.Category;
| import com.codestudio.sql.PoolMan;
|
| import util.ResourceUtils;
| import util.BaseException;
| import util.Logger;
| import org.apache.log4j.xml.DOMConfigurator;
|
| /**
| * This class performs System Initialization, e.g., setting up
| * Logging, auditing, pooling, configurations, etc.
| * The class cannot be instantiated.
| * @see #initialize() for invoking the initializer properly.
| */
| public abstract class Initializer
| {
|
| static Category cat = Category.getInstance("base.pack");
| static boolean isInitialized = false;
| /**
| * Initialize the System
| */
| public static void initialize()
| {
| if (isInitialized) return;
| try
| {
|
| System.out.println("Initializing Logging");
| initLogging();
|
| isInitialized=true;
| }
| catch(BaseException e)
| {
| Logger.fatal("base.pack","Fatal error initializing",e);
| }
| }
|
| private static void initPools() throws BaseException
| {
| try
| {
| PoolMan.start();
| }
| catch (Exception e)
| {
| throw new BaseException("Error Initializing Pools.", e);
| }
| }
| private static void initLogging() throws BaseException
| {
| try
| {
| //System.out.println("********* start init logging");
| //Properties p = ResourceUtils.getProperties(Initializer.class, \
"/log.config"); | //Properties p = new Properties();
| //System.out.println("********* init loggging '" + p.toString() + \
"'"); |
| // if (p==null)
| // {
| //System.out.println("p is null");
| // throw new BaseException("Cannot load Properties");
| // }
|
| //System.out.println("********* props not null " + p.toString());
|
| Logger log = new Logger("base.pack");
| Logger.debug("base.pack", "******* Logging started");
| }
| catch (Exception e)
| {
| System.out.println("fatal error and we are hosed " + e);
| throw new BaseException("Fatal Error Initializing", e);
| }
| }
| }
package util;
|
| import org.apache.log4j.PropertyConfigurator;
| import org.apache.log4j.NDC;
| import org.apache.log4j.Category;
| import org.apache.log4j.Priority;
| import java.util.Properties;
| import java.util.HashMap;
|
| import org.apache.log4j.xml.DOMConfigurator;
| /**
| * This class kicks off the logging mechanism for the system
| * and needs to be called at program startup
| *
| */
|
| public class Logger
| {
|
| //private String m_category = null;
| private Properties m_configProps= null;
|
| private static HashMap m_categories = new HashMap(5);
| DOMConfigurator dc;
| //static org.apache.log4j.Logger log;
|
| /** The constructor kicks off the logging mechanism.
| * @param pCategory is the category that logging starts with
| * which is typically the main class.
| * @param pConfigFile is the name of the config file that is
| * used to initialize the logging mechanism and set it's properties
| */
| public Logger(String pCategory, Properties pConfigFile)
| {
| //System.out.println("*********logger has been initiated 0 Logger.java");
| // m_configProps = pConfigFile;
|
| //System.out.println("*********logger has been initiated 1 Logger.java");
| // Category cat = Category.getInstance(pCategory);
|
| // System.out.println("*********logger has been initiated 2 \
Logger.java"); | // m_categories.put(pCategory,cat);
| // System.out.println("*********logger has been initiated 3 \
Logger.java"); | // PropertyConfigurator.configure(m_configProps); // todo \
java2 | //System.out.println("*********logger has been initiated 4 \
Logger.java"); | }
|
| public Logger(String pClassName)
| {
| //System.out.println("*********logger has been initiated 0 Logger.java");
| // m_configProps = pConfigFile;
|
| //System.out.println("*********logger has been initiated 1 Logger.java");
| // Category cat = Category.getInstance(pCategory);
|
| // System.out.println("*********logger has been initiated 2 \
Logger.java"); | // m_categories.put(pCategory,cat);
| // System.out.println("*********logger has been initiated 3 \
Logger.java"); | // PropertyConfigurator.configure(m_configProps);
| //System.out.println("*********logger has been initiated 4 Logger.java");
| // dc = new DOMConfigurator();
| // dc.configure("/packages/jboss-3.2.2/server/default/conf/log4j.xml");
| }
|
| /**
| * This method should be run in a static block in any class
| * that wishes to do logging. This will guarantee that logging
| * can be done for that class 'category' (won't be null).
| * Logging must be initialized within the jvm with the constructor
| * before this method can be invoked.
| * @see #Logger(String pCategory, Properties pConfigFile)
| */
| public static void addLoggingForClass(String pClassName)
| {
| System.out.println("setting up logging for " + pClassName);
| //Category acat = getCategory(pClassName);
| //m_categories.put(pClassName,acat);
| //acat.log(pClassName, Priority.INFO, "Setting up Logging for " + \
pClassName, null); | //log = org.apache.log4j.Logger.getLogger(pClassName);
| }
|
|
| private static Category getCategory(String p)
| {
| if (m_categories.containsKey(p))
| {
| return(Category) m_categories.get(p);
| }
| else
| {
| Category newcat =
| Category.getInstance(p);
| m_categories.put(p,newcat);
| return newcat;
| }
|
| }
|
| public static void debug(String pClassName, Object pMsg)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.DEBUG, pMsg, null);
| }
|
| public static void info(String pClassName, Object pMsg)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.INFO, pMsg,null);
| }
|
| public static void warn(String pClassName, Object pMsg)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.WARN, pMsg, null);
| }
|
| public static void warn(String pClassName, Object pMsg, Throwable pT)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.WARN, pMsg, pT);
| }
|
| public static void error(String pClassName, Object pMsg, Throwable pT)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.ERROR, pMsg, pT);
| }
|
| public static void error(String pClassName, Object pMsg)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.ERROR, pMsg,null);
| }
|
| /**
| * TODO!!! get requirements for what to do on a fatal error
| * send emails, alert the media, make pagers go off, that sort of thing..
| */
| public static void fatal(String pClassName, Object pMsg, Throwable pT)
| {
| Category acat = getCategory(pClassName);
| acat.log(pClassName, Priority.FATAL, pMsg + " \n\n\n\n\n\nFATAL \
ERROR\n\n\n\n\n\n\n\n", pT); | //System.exit(999);
| }
|
| public static void push(Object p)
| {
| NDC.push(p.toString());
| }
|
| public static void pop()
| {
| NDC.pop();
| }
|
| }
View the original post : \
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3833298#3833298
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3833298
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic