Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Log file get corrupted on rotation

Tags:

log4j

I am using lo4j.xml configuration file as below -

    <?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">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss} %-5p %C - %m%n" />
        </layout>
    </appender>



    <appender name="Daily-ROLL-Metric" class="org.apache.log4j.rolling.RollingFileAppender">
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="FileNamePattern"
                value="C:/logs/metric.log.%d{yyyy-MM-dd}.gz" />
            <param name="ActiveFileName" value="C:/logs/metric.log" />
        </rollingPolicy>

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p (%F:%L) - %m%n" />
        </layout>
    </appender>


    <logger
        name="com.tieto.teco.cloudmonitor.mq.listener.SiteScopeMetricsHandler"
        additivity="false">
        <level value="debug" />
        <appender-ref ref="Daily-ROLL-Metric" />
    </logger>

    <root>
        <level value="info" />
        <appender-ref ref="Daily-ROLL" />
        <appender-ref ref="console" />
    </root>


</log4j:configuration>

for the first time it creates the file correctly but on the rotation of the file on next day, some corrupt data gets inserted in the file. if I use "vi file" command it shows ^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@ characters.

and if i use sed command to display fist 5 lines of file sed -n 1,5p filename it does not work

and when i exclude first line it shows me correct log data sed -n 2,5p filename

it seems, some binary data gets inserted on first line of the file at the time of rotation

need help to solve the issue.

like image 751
user1705352 Avatar asked Dec 15 '25 12:12

user1705352


1 Answers

I was too running into this. I tried setting attribute append="true" and it did solve my issue.

    ...
    ...
    <appender name="Daily-ROLL-Metric" class="org.apache.log4j.rolling.RollingFileAppender" append="true">
    ...
    ...

For your reference, my appender looked like:

<Appenders>

    <RollingFile name="ROLL-FILE" fileName="logfilename"
                 filePattern="logs/application-%d{yyyy-MM-dd}-%i.log"
                 immediateFlush="false" append="true">
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C (%F:%L) - %X{unique-id} - %m%n"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="20 MB"/>
        </Policies>
    </RollingFile>

</Appenders>
like image 140
Mukul Avatar answered Dec 19 '25 06:12

Mukul



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!