3 Replies Latest reply on Oct 2, 2006 12:14 PM by mmarcom

    Error when logging inside EJB s

    mmarcom

      hi all,
      i am having troubles iwth logging with jboss 4.0.4.GA..
      I have deployed (successfully) few EJBs in an .ear file on jboss-4.0.4
      all my ejbs and web action classes use log4j for logging (i have my own log4j.properties file).
      what happens is that whenever i run my application, log is fine on the web, but whenever i call an ejb, the console hangs giving me back this message

      ERROR: invalid console appender config detected, console stream is looping
      


      in one of ejbs, i have tried to replace log4j with System.err callls and it works just fine..
      since my logger works in my web project, i have excluded it from being cause of probblems.
      So, the trouble is that i cannt do logging in my ejbs... can anyone tell me why?
      are there any settings i need to modify?
      can anyone help?

      thanks in advance and regards
      marco


        • 1. Re: Error when logging inside EJB s
          alrubinger

          Post your log4j.conf? Looks like you have a circular reference in there, like you have an appender containing an "appender-ref" calling itself or something similar...

          S,
          ALR

          • 2. Re: Error when logging inside EJB s
            mmarcom

            hello,
            here they are..
            it looks like (from logs), jboss is using log4j.properties which is embedded in my jar file

            here it is

            #
            # Set the redbook EJB code priority to DEBUG
            #
            log4j.category.itso.was4ad.ejb=DEBUG
            
            #
            # Logging properties
            # TC 06.03.03
            #
            log4j.rootLogger=debug, stdout, NGEN_LOG_FILE
            
            log4j.appender.stdout=org.apache.log4j.ConsoleAppender
            log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
            #
            # NGEN_LOG_FILE is a FileAppender that appends to logs\ngenTrace.log
            #
            log4j.appender.NGEN_LOG_FILE=org.apache.log4j.RollingFileAppender
            log4j.appender.NGEN_LOG_FILE.File=ngenTrace.log
            
            log4j.appender.NGEN_LOG_FILE.MaxFileSize=100000KB
            
            # Keep one backup file
            log4j.appender.NGEN_LOG_FILE.MaxBackupIndex=1
            
            log4j.appender.NGEN_LOG_FILE.layout=org.apache.log4j.PatternLayout
            
            ###########################################################################
            # DO NOT CHANGE THIS!
            ###########################################################################
            log4j.appender.NGEN_LOG_FILE.layout.ConversionPattern=%-5p (%c{2}): %m%n
            log4j.appender.stdout.layout.ConversionPattern=%-5p (%c{2}): %m%n
            


            and this is the one in conf directory of jboss
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
            
            <!-- ===================================================================== -->
            <!-- -->
            <!-- Log4j Configuration -->
            <!-- -->
            <!-- ===================================================================== -->
            
            <!-- $Id: log4j.xml,v 1.26.2.10 2006/04/21 17:29:20 csuconic Exp $ -->
            
            <!--
             | For more configuration infromation and examples see the Jakarta Log4j
             | owebsite: http://jakarta.apache.org/log4j
             -->
            
            <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
            
             <!-- ================================= -->
             <!-- Preserve messages in a local file -->
             <!-- ================================= -->
            
             <!-- A time/date based rolling appender -->
             <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="File" value="${jboss.server.log.dir}/server.log"/>
             <param name="Append" value="false"/>
            
             <!-- Rollover at midnight each day -->
             <param name="DatePattern" value="'.'yyyy-MM-dd"/>
            
             <!-- Rollover at the top of each hour
             <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
             -->
            
             <layout class="org.apache.log4j.PatternLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
            
             <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
             <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
             -->
             </layout>
             </appender>
            
             <!-- A size based file rolling appender
             <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="File" value="${jboss.server.log.dir}/server.log"/>
             <param name="Append" value="false"/>
             <param name="MaxFileSize" value="500KB"/>
             <param name="MaxBackupIndex" value="1"/>
            
             <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
             </layout>
             </appender>
             -->
            
             <!-- ============================== -->
             <!-- Append messages to the console -->
             <!-- ============================== -->
            
             <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="Target" value="System.out"/>
             <param name="Threshold" value="INFO"/>
            
             <layout class="org.apache.log4j.PatternLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
             </layout>
             </appender>
            
             <!-- ====================== -->
             <!-- More Appender examples -->
             <!-- ====================== -->
            
             <!-- Buffer events and log them asynchronously
             <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <appender-ref ref="FILE"/>
             <appender-ref ref="CONSOLE"/>
             <appender-ref ref="SMTP"/>
             </appender>
             -->
            
             <!-- EMail events to an administrator
             <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="Threshold" value="ERROR"/>
             <param name="To" value="admin@myhost.domain.com"/>
             <param name="From" value="nobody@myhost.domain.com"/>
             <param name="Subject" value="JBoss Sever Errors"/>
             <param name="SMTPHost" value="localhost"/>
             <param name="BufferSize" value="10"/>
             <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
             </layout>
             </appender>
             -->
            
             <!-- Syslog events
             <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="Facility" value="LOCAL7"/>
             <param name="FacilityPrinting" value="true"/>
             <param name="SyslogHost" value="localhost"/>
             <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
             </layout>
             </appender>
             -->
            
             <!-- Log events to JMS (requires a topic to be created)
             <appender name="JMS" class="org.apache.log4j.net.JMSAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="Threshold" value="ERROR"/>
             <param name="TopicConnectionFactoryBindingName" value="java:/ConnectionFactory"/>
             <param name="TopicBindingName" value="topic/MyErrorsTopic"/>
             </appender>
             -->
            
             <!-- Log events through SNMP
             <appender name="TRAP_LOG" class="org.apache.log4j.ext.SNMPTrapAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="ImplementationClassName" value="org.apache.log4j.ext.JoeSNMPTrapSender"/>
             <param name="ManagementHost" value="127.0.0.1"/>
             <param name="ManagementHostTrapListenPort" value="162"/>
             <param name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/>
             <param name="LocalIPAddress" value="127.0.0.1"/>
             <param name="LocalTrapSendPort" value="161"/>
             <param name="GenericTrapType" value="6"/>
             <param name="SpecificTrapType" value="12345678"/>
             <param name="CommunityString" value="public"/>
             <param name="ForwardStackTraceWithTrap" value="true"/>
             <param name="Threshold" value="DEBUG"/>
             <param name="ApplicationTrapOID" value="1.3.6.1.4.1.24.12.10.22.64"/>
             <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="%d,%p,[%t],[%c],%m%n"/>
             </layout>
             </appender>
             -->
            
             <!-- Emit events as JMX notifications
             <appender name="JMX" class="org.jboss.monitor.services.JMXNotificationAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
            
             <param name="Threshold" value="WARN"/>
             <param name="ObjectName" value="jboss.system:service=Logging,type=JMXNotificationAppender"/>
            
             <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="%d %-5p [%c] %m"/>
             </layout>
             </appender>
             -->
            
             <!-- ================ -->
             <!-- Limit categories -->
             <!-- ================ -->
            
             <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
             <category name="org.apache">
             <priority value="INFO"/>
             </category>
            
             <category name="com.waersystems">
             <priority value="TRACE"/>
             </category>
            
            
             <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose -->
             <category name="org.jboss.serial">
             <priority value="INFO"/>
             </category>
            
             <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
             <category name="org.jgroups">
             <priority value="WARN"/>
             </category>
            
             <!-- Limit the jacorb category to WARN as its INFO is verbose -->
             <category name="jacorb">
             <priority value="WARN"/>
             </category>
            
             <!-- Limit JBoss categories
             <category name="org.jboss">
             <priority value="INFO"/>
             </category>
             -->
            
             <!-- Limit the JSR77 categories -->
             <category name="org.jboss.management">
             <priority value="INFO"/>
             </category>
            
             <!-- Limit Axis based webservice category -->
             <category name="org.jboss.webservice">
             <priority value="TRACE"/>
             </category>
             <category name="org.jboss.axis">
             <priority value="INFO"/>
             </category>
            
             <!-- Limit JBossWS webservice category
             <category name="org.jboss.ws">
             <priority value="DEBUG"/>
             </category>
             -->
            
             <!-- Decrease the priority threshold for the org.jboss.varia category
             <category name="org.jboss.varia">
             <priority value="DEBUG"/>
             </category>
             -->
            
             <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]
             <category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">
             <priority value="TRACE" class="org.jboss.logging.XLevel"/>
             </category>
             -->
            
             <!--
             | An example of enabling the custom TRACE level priority that is used
             | by the JBoss internals to diagnose low level details. This example
             | turns on TRACE level msgs for the org.jboss.ejb.plugins package and its
             | subpackages. This will produce A LOT of logging output.
             <category name="org.jboss.system">
             <priority value="TRACE" class="org.jboss.logging.XLevel"/>
             </category>
             <category name="org.jboss.ejb.plugins">
             <priority value="TRACE" class="org.jboss.logging.XLevel"/>
             </category>
             -->
            
             <!--
             | Logs these events to SNMP:
             - server starts/stops
             - cluster evolution (node death/startup)
             - When an EJB archive is deployed (and associated verified messages)
             - When an EAR archive is deployed
            
             <category name="org.jboss.system.server.Server">
             <priority value="INFO" />
             <appender-ref ref="TRAP_LOG"/>
             </category>
            
             <category name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">
             <priority value="INFO" />
             <appender-ref ref="TRAP_LOG"/>
             </category>
            
             <category name="org.jboss.deployment.MainDeployer">
             <priority value="ERROR" />
             <appender-ref ref="TRAP_LOG"/>
             </category>
            
             <category name="org.jboss.ejb.EJBDeployer">
             <priority value="INFO" />
             <appender-ref ref="TRAP_LOG"/>
             </category>
            
             <category name="org.jboss.deployment.EARDeployer">
             <priority value="INFO" />
             <appender-ref ref="TRAP_LOG"/>
             </category>
            
             -->
            
             <!-- ======================= -->
             <!-- Setup the Root category -->
             <!-- ======================= -->
            
             <root>
             <appender-ref ref="CONSOLE"/>
             <appender-ref ref="FILE"/>
             </root>
            
             <!-- Clustering logging -->
             <!-- Uncomment the following to redirect the org.jgroups and
             org.jboss.ha categories to a cluster.log file.
            
             <appender name="CLUSTER" class="org.jboss.logging.appender.RollingFileAppender">
             <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
             <param name="File" value="${jboss.server.log.dir}/cluster.log"/>
             <param name="Append" value="false"/>
             <param name="MaxFileSize" value="500KB"/>
             <param name="MaxBackupIndex" value="1"/>
            
             <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
             </layout>
             </appender>
             <category name="org.jgroups">
             <priority value="DEBUG" />
             <appender-ref ref="CLUSTER"/>
             </category>
             <category name="org.jboss.ha">
             <priority value="DEBUG" />
             <appender-ref ref="CLUSTER"/>
             </category>
             -->
            
            </log4j:configuration>
            


            .... could you help me out?
            is it the fact that i have 2console appenders? but logging works fine for web layer... it is just ejb that is screwing up things..
            thanks and regards
            marco

            • 3. Re: Error when logging inside EJB s / fixed
              mmarcom

              hi all
              i found problem.. i have a file appender that appends logs to my private log file.. and that was why i coul dno tsee anything from System.out

              correct logs were being logged in my private log file

              thanks again and regards
              marco