Witam

Staram sie skonfigurowac sobie loggera - log4j.
Zrobilem wszystko wedlug poradnika na stronie: http://blog.rueedlinger.ch/2010/09/initialize-log4j-with-an-ejb-3-1-startup-bean/.

Plik log4j.properties znajduje sie w katalogu /META-INF i jest odczytywany.
Posiadam beana inicjalizujacego:

 
@Singleton
@Startup
public class Log4jStartupBean{

   private static final String LOG4J = "/META-INF/log4j.properties";
   private Logger logger = null;


   @PostConstruct
   public void startup() {
	URL url = this.getClass().getResource(LOG4J);

        if(url == null || url.getFile().length() == 0) {
		throw new RuntimeException("Log4j config file "+ LOG4J +" not found");
	}

	PropertyConfigurator.configure(url.getFile());
	logger = Logger.getLogger(this.getClass());
	logger.info("logger initialized with "+ LOG4J + "...");
   }
}

Podczas startu aplikacji wywala nastepujacy stacktrace:

SEVERE: log4j:WARN No appenders could be found for logger (org.jboss.logging).
SEVERE: log4j:WARN Please initialize the log4j system properly.
SEVERE: log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
INFO: Initializing Mojarra 2.1.6 (SNAPSHOT 20111206) for context ''
INFO: WEB0671: Loading application [__admingui] at [/]
INFO: CORE10010: Loading application __admingui done in 4 703 ms
INFO: The Admin Console application is loaded.
SEVERE: Exception while loading the app
SEVERE: log4j:ERROR log4j called after unloading, see http://logging.apache.org/log4j/1.2/faq.html#unload.
SEVERE: java.lang.IllegalStateException: Class invariant violation
	at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199)
	at org.apache.log4j.LogManager.getLogger(LogManager.java:228)
	at org.apache.log4j.Logger.getLogger(Logger.java:104)
	at org.jboss.logging.Log4jLogger.<init>(Log4jLogger.java:35)
	at org.jboss.logging.Log4jLoggerProvider.getLogger(Log4jLoggerProvider.java:33)
	at org.jboss.logging.Logger.getLogger(Logger.java:2163)
	at org.jboss.logging.Logger.getMessageLogger(Logger.java:2259)
	at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214)
	at org.hibernate.cfg.annotations.ListBinder.<clinit>(ListBinder.java:60)
	at sun.misc.Unsafe.ensureClassInitialized(Native Method)
	at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
	at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:140)
	at java.lang.reflect.Field.acquireFieldAccessor(Field.java:949)
	at java.lang.reflect.Field.getFieldAccessor(Field.java:930)
	at java.lang.reflect.Field.get(Field.java:372)
	at org.glassfish.web.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1833)
	at org.glassfish.web.loader.WebappClassLoader.stop(WebappClassLoader.java:1662)
	at org.glassfish.web.loader.WebappClassLoader.preDestroy(WebappClassLoader.java:1631)
	at org.glassfish.deployment.common.DeploymentContextImpl.preDestroy(DeploymentContextImpl.java:151)
	at com.sun.enterprise.v3.server.ApplicationLifecycle$1.actOn(ApplicationLifecycle.java:281)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:465)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)

SEVERE: 	at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199)
SEVERE: 	at org.apache.log4j.LogManager.getLogger(LogManager.java:228)
SEVERE: 	at org.apache.log4j.Logger.getLogger(Logger.java:104)
SEVERE: 	at org.jboss.logging.Log4jLogger.<init>(Log4jLogger.java:35)
SEVERE: 	at org.jboss.logging.Log4jLoggerProvider.getLogger(Log4jLoggerProvider.java:33)
SEVERE: 	at org.jboss.logging.Logger.getLogger(Logger.java:2163)
SEVERE: 	at org.jboss.logging.Logger.getMessageLogger(Logger.java:2259)
SEVERE: 	at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214)
SEVERE: 	at org.hibernate.cfg.annotations.ListBinder.<clinit>(ListBinder.java:60)
SEVERE: 	at sun.misc.Unsafe.ensureClassInitialized(Native Method)
SEVERE: 	at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
SEVERE: 	at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:140)
SEVERE: 	at java.lang.reflect.Field.acquireFieldAccessor(Field.java:949)
SEVERE: 	at java.lang.reflect.Field.getFieldAccessor(Field.java:930)
SEVERE: 	at java.lang.reflect.Field.get(Field.java:372)
SEVERE: 	at org.glassfish.web.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1833)
SEVERE: 	at org.glassfish.web.loader.WebappClassLoader.stop(WebappClassLoader.java:1662)
SEVERE: 	at org.glassfish.web.loader.WebappClassLoader.preDestroy(WebappClassLoader.java:1631)
SEVERE: 	at org.glassfish.deployment.common.DeploymentContextImpl.preDestroy(DeploymentContextImpl.java:151)
SEVERE: 	at com.sun.enterprise.v3.server.ApplicationLifecycle$1.actOn(ApplicationLifecycle.java:281)
SEVERE: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:465)
SEVERE: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
SEVERE: 	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
SEVERE: 	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
SEVERE: 	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
SEVERE: 	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
SEVERE: 	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
SEVERE: 	at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
SEVERE: 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
SEVERE: 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
SEVERE: 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
SEVERE: 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
SEVERE: 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
SEVERE: 	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
SEVERE: 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
SEVERE: 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
SEVERE: 	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
SEVERE: 	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
SEVERE: 	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
SEVERE: 	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
SEVERE: 	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
SEVERE: 	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
SEVERE: 	at java.lang.Thread.run(Thread.java:722)
WARNING: Exception while dispatching an event
java.lang.NullPointerException
	at org.hibernate.internal.CoreMessageLogger_$logger.closing(CoreMessageLogger_$logger.java:3009)
	at org.hibernate.internal.SessionFactoryImpl.close(SessionFactoryImpl.java:1386)
	at org.hibernate.ejb.EntityManagerFactoryImpl.close(EntityManagerFactoryImpl.java:147)
	at org.glassfish.persistence.jpa.JPADeployer.closeEMFs(JPADeployer.java:417)
	at org.glassfish.persistence.jpa.JPADeployer.event(JPADeployer.java:408)
	at org.glassfish.kernel.event.EventsImpl$1.run(EventsImpl.java:120)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Co moge zrobic, zebym mogl korzystac z log4j?