You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Steven Swor (JIRA)" <ji...@apache.org> on 2015/11/25 23:44:11 UTC

[jira] [Commented] (LOG4J2-1204) log4j2 routing file appender appending the entries of current day log in previous log file

    [ https://issues.apache.org/jira/browse/LOG4J2-1204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15027737#comment-15027737 ] 

Steven Swor commented on LOG4J2-1204:
-------------------------------------

I've seen a similar issue with rolling file appenders in Log4J 1.2, where the file would roll but we would still append new events to the previous day's log file.

I can't speak for what's going on here, but in my case, Tomcat and the web app each had their own Log4J configuration files, and it turned out that they were both writing to the same file using rolling file appenders. One would roll the file and start writing to the new day's file, but the other one would keep appending to the older file.

What we did for that situation (rolling file appenders from two different configurations writing to the same file) was to have each one write to its own file, but keep the patterns the same. Then we used an external tool (Splunk in our case, but you could just as easily use ELK or whatever) to search log events across both sets of files.

> log4j2 routing file appender appending the entries of current day log in previous log file
> ------------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-1204
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1204
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.4.1
>         Environment: Windows 7 Enterprise , Core i5 vPro, 4Gb RAM
>            Reporter: Rajakrishnan
>              Labels: newbie, patch
>
> 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.
> {code:xml}
> <?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>
> {code}
> 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 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org