Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-1204

log4j2 routing file appender appending the entries of current day log in previous log file

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.4.1
    • None
    • Appenders
    • Windows 7 Enterprise , Core i5 vPro, 4Gb RAM

    • Patch, Important

    Description

      This is my scenario: For my website I have used log4j2 for rolling log files. currently I am generating 3 log file which consist of 2 rolling file (trace & error) and 1 routing appender.

      1) Trace log of entire date (rolling file appender)

      2) Error log of entire date (rolling file appender)

      3) logged users activity log for entire day (routing file appender)

      Below is my log4j2.xml using for the above scenario, which works exactly as per the requirement.

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE xml>
      <Configuration status="WARN" name="mywebsite" monitorInterval="30">
          <Appenders>
      
              <Console name="Console" target="SYSTEM_OUT">
                  <PatternLayout
                      pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
              </Console>
      
              <RollingFile name="error-log" append="true"
                  fileName="D:/client/error [${date:yyyy-MM-dd}].log" filePattern="D:/lient/error-%d{yyyy-MM-dd}.log">
                  <PatternLayout
                      pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
                  <Policies>
                      <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                      <SizeBasedTriggeringPolicy size="250 MB" />
                  </Policies>
              </RollingFile>
      
              <RollingFile name="trace-log" append="true"
                  fileName="D:/client/trace [${date:yyyy-MM-dd}].log" filePattern="D:/client/trace-%d{yyyy-MM-dd}.log">
                  <PatternLayout
                      pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
                  <Policies>
                      <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                      <SizeBasedTriggeringPolicy size="250 MB" />
                  </Policies>
              </RollingFile>
      
              <Routing name="RoutingAppender">
                  <Routes pattern="$${ctx:logFileName}">
                      <Route>
                          <RollingFile name="Rolling-${ctx:logFileName}" append="true"
                              fileName="D:/userlog/${ctx:logFileName}~${date:yyyy-MM-dd}.log"
                              filePattern="D:/userlog/${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log.gz">
                              <PatternLayout
                                  pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
                              <Policies>
                                  <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                                  <SizeBasedTriggeringPolicy size="512 MB" />
                              </Policies>
                          </RollingFile>
                      </Route>
                      <Route ref="Console" key="${ctx:logFileName}" />
                  </Routes>
              </Routing>
      
          </Appenders>
      
          <Loggers>
              <Root level="trace" additivity="false">
                  <Appender-Ref ref="Console"/> 
                  <Appender-Ref ref="trace-log" level="trace" />
                  <Appender-Ref ref="error-log" level="error" />
                  <Appender-Ref ref="RoutingAppender" />
              </Root>
          </Loggers>
      </Configuration>
      
      

      I am new to log4j2, I somehow managed to configure the log4j xml from the sources in internet. Rolling file were created for every day and file append-er created for each user and catches the respective events in the respective files for the entire day, .

      Issue is :

      When date changes, events of current day were added in the previous day log file.

      For example the trace.log file of 1st November has the log events entries of 2nd November.

      This happens for file append-er too .

      For example file append-er will generate log file based on user log's in say log file named john-01-112015.log was created yesterday. and same user log's in 2nd November a new file should be rolled out as per the configuration. but the logs of 2nd November is added in the john-01-112015.log as said in the previous scenario.
      new log file should be triggerd everyday, but it fails and logs were appended in the existing log of the logged user.

      When the tomcat is stop started then the new file genereted, but the issue exist until the next stop start. we can't do stop start in production env..

      Guys in stackoverflow suggested to raise a ticket ,since it might be a possible bug.

      Is there anything wrong in the log4j2.xml ? guys help me to solve this issue. Guide me if i did anything wrong

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            protocol17 Rajakrishnan

            Dates

              Created:
              Updated:

              Slack

                Issue deployment