Setting a counter to count the Logging events for each user

Discussions

General J2EE: Setting a counter to count the Logging events for each user

  1. Hi all,

    I am facing problem configuring a counter, which increments for every Logging event. My counter increments for Every logging event as supposed to do. But it is not resetting to zero and start counting for each user start to access application. It is starting from the count it is counted for logging events for the previous user.
    I followed some sample code i got from the internet. Here is the code sample code. Conter should start from zero and count the logging events for every user, since i need to log the counter value and logger text inside the data base.

    Any Help will be appreciated


      public class MyPatternLayout extends PatternLayout {
        public
        MyPatternLayout() {
          this(DEFAULT_CONVERSION_PATTERN);
        }
      
        public
        MyPatternLayout(String pattern) {
          super(pattern);
        }
          
        public
        PatternParser createPatternParser(String pattern) {
          return new MyPatternParser(
            pattern == null ? DEFAULT_CONVERSION_PATTERN : pattern);
        }
        
        public
        static void main(String[] args) {
          Layout layout = new MyPatternLayout("[counter=%.10#] - %m%n");
          Category cat = Category.getInstance("some.cat");
          cat.addAppender(new ConsoleAppender(layout, ConsoleAppender.SYSTEM_OUT));
          cat.debug("Hello, log");
          cat.info("Hello again...");
        }
      }


    ----------------------------------------------------------------

    package org.apache.log4j;
      
      import org.apache.log4j.helpers.FormattingInfo;
      import org.apache.log4j.helpers.PatternConverter;
      import org.apache.log4j.helpers.PatternParser;
      import org.apache.log4j.spi.LoggingEvent;
      
        public class MyPatternParser extends PatternParser {
      
        int counter = 0;
      
        public
        MyPatternParser(String pattern) {
          super(pattern);
        }
          
        public
        void finalizeConverter(char c) {
          if (c == '#') {
            addConverter(new UserDirPatternConverter(formattingInfo));
            currentLiteral.setLength(0);
          } else {
            super.finalizeConverter(c);
          }
        }
        
        private class UserDirPatternConverter extends PatternConverter {
          UserDirPatternConverter(FormattingInfo formattingInfo) {
            super(formattingInfo);
          }
      
          public
          String convert(LoggingEvent event) {
            return String.valueOf(++counter);
          }
        }
      }
    ------------------------------------------------------------
  2. How does your logger know when the user changes???