Log file gets corrupted when rotating

I am using lo4j.xml config file as shown 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>

      

the first time it creates the file correctly, but when the file is rotated the next day, some corrupted data is inserted into the file. if i use command "vi file" it shows: ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ symbols.

and if i use sed command to display five lines of file sed -n 1,5p filename it doesn't work

and when i omit the first line it shows me the correct log data file name sed -n 2,5p

it seems some binary data gets inserted into the first line of the file during rotation

need help to solve the problem.

+3


source to share


1 answer


I ran into this too. I tried to set the append = "true" attribute and that solved my problem.

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

      



For your reference, my appender looked like this:

<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>

      

+1


source







All Articles