5 Replies Latest reply on May 4, 2015 1:57 AM by travellerx

    Logging in Custom WorkItemHandler not working

    xtraveller

      Hello Everyone,

      I am new to JBPM.


      JBPM: 6.2.0

      JBoss : AS 7.1.1

      JDK : 1.7+



      I am working on some custom workitemhandlers. I am stuck about how to use the logging apis like log4j or logback.


      When I use System.out.println, it's getting logged on the jboss server.log


      However, when used log4j or logback, it's not logging anything. Neither on server.log or log files.


      Sample WorkItemHandler:


      import org.kie.api.runtime.process.WorkItem;

      import org.kie.api.runtime.process.WorkItemHandler;

      import org.kie.api.runtime.process.WorkItemManager;

      import org.slf4j.Logger;

      import org.slf4j.LoggerFactory;

       

       

      /**

      *

      */

      public class SampleWorkItemHandler implements WorkItemHandler {

       

       

        // logger for SampleWorkItemHandler

        private static Logger logger = (Logger) LoggerFactory

        .getLogger(SampleWorkItemHandler.class);

       

       

        /*

        * (non-Javadoc)

        *

        * @see

        * org.kie.api.runtime.process.WorkItemHandler#executeWorkItem(org.kie.api

        * .runtime.process.WorkItem, org.kie.api.runtime.process.WorkItemManager)

        */

        public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {

        System.out.println("I am in SampleWorkItemHandler");

        logger.debug("Hey I am in SampleWorkItemHandler");

        manager.abortWorkItem(workItem.getId());

        }

       

       

        /*

        * (non-Javadoc)

        *

        * @see

        * org.kie.api.runtime.process.WorkItemHandler#abortWorkItem(org.kie.api

        * .runtime.process.WorkItem, org.kie.api.runtime.process.WorkItemManager)

        */

        public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {

        manager.abortWorkItem(workItem.getId());

        }

       

       

      }

       

      My log4j.xml, logging.properties, log4j.properties:

       

      # Additional logger names to configure (root logger is always configured)

      loggers=org.jboss.as.config

       

       

      # Dump system environment at boot by default

      logger.org.jboss.as.config.level=DEBUG

       

       

      # Root logger level

      logger.level=DEBUG

      # Root logger handlers

      logger.handlers=FILE,CONSOLE

       

       

      # Console handler configuration

      handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler

      handler.CONSOLE.properties=autoFlush

      handler.CONSOLE.level=DEBUG

      handler.CONSOLE.autoFlush=true

      handler.CONSOLE.formatter=PATTERN

       

       

      # File handler configuration

      handler.FILE=org.jboss.logmanager.handlers.FileHandler

      handler.FILE.level=DEBUG

      handler.FILE.properties=autoFlush,fileName

      handler.FILE.autoFlush=true

      handler.FILE.fileName=${org.jboss.boot.log.file:boot.log}

      handler.FILE.formatter=PATTERN

       

       

      # Formatter pattern configuration

      formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter

      formatter.PATTERN.properties=pattern

      formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p [%c] %s%E%n

       

      ---

       

      <?xml version="1.0" encoding="UTF-8" ?>

      <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

      <log4j:configuration debug="true"

        xmlns:log4j='http://jakarta.apache.org/log4j/'>

       

       

        <appender name="console" class="org.apache.log4j.ConsoleAppender">

        <layout class="org.apache.log4j.PatternLayout">

        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />

        </layout>

        </appender>

       

       

        <appender name="file" class="org.apache.log4j.RollingFileAppender">

        <param name="append" value="false" />

        <param name="maxFileSize" value="10MB" />

        <param name="maxBackupIndex" value="10" />

        <param name="file" value="/logs/xxx.log" />

        <layout class="org.apache.log4j.PatternLayout">

        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />

        </layout>

        </appender>

       

       

        <root>

        <level value="DEBUG" />

        <appender-ref ref="console" />

        <appender-ref ref="file" />

        </root>

       

       

      </log4j:configuration>

       

       

      Appreciate any help !

        • 1. Re: Logging in Custom WorkItemHandler not working
          abhijithumbe

          Hi,

            Are you uploading workItemHandler jar into workbench artifact repository  or packing into 'lib' directory ? Also share more details on how you are loading log4j.xml/log4j.properties file.

          • 2. Re: Logging in Custom WorkItemHandler not working
            swiderski.maciej

            since you run on JBoss AS you need to configure logging accordingly on application server level.

             

            HTH

            • 3. Re: Logging in Custom WorkItemHandler not working
              xtraveller

              @Abhijit Humbe; I am keeping the log4j.xml in the resources folder. Project structure is maven archtype.

               

              Also, I am keeping the WorkItemHandler jar file in the lib folder. I tried it with uploading to the workbench artifact repository & dependency folder.

               

              I tried with the JBoss logging as well but it's not working. I tried logback, log4j. When I do sysout, it does show the logs in the jboss server.log but file appender is not working.

              • 4. Re: Logging in Custom WorkItemHandler not working
                abhijithumbe

                Hi,

                I can see same behavior with org.slf4j.* API's at my end. Can you give a try with org.apache.log4j API's.

                ~~~~

                import org.apache.log4j.Logger;

                .. . .

                private static Logger logger = (Logger) Logger.getLogger(DemoWorkItemHandler.class);

                ~~~~

                Also in the log4j.xml I can see you have specified log file location as:

                ~~~

                . . .

                  <param name="file" value="/logs/xxx.log" />

                ~~~

                xxx.log will be created under "$JBOSS_HOME/bin/log" directory.

                • 5. Re: Logging in Custom WorkItemHandler not working
                  travellerx

                  Sorry for the delayed response

                   

                  Thanks for the suggestion ( I don't know how I missed to try import that)

                   

                  After importing,

                  import org.apache.log4j.Logger;

                   

                  I could able to log the info/debug.

                   

                  I wonder why it doesn't work with SLF4J or logback ? I tried to debug it, but that generates so much of data in few seconds.

                   

                  May be I will try it later with other loggers !

                   

                  For now, I am going with log4j.