sto usando org.apache.log4j.Logger e ho spesso vedere le linee del mio log che assomigliano a questo:Ottenere più registri su una linea con log4j
2013-06-09T00:06:00,092 data data data dat2013-06-09T00:06:10,253 data data2013-06-09T00:06:16,202 data d2013-06-09T00:06:20,750 data data data data
Quello che mi aspetto di vedere è:
2013-06-09T00:06:00,092 data data data data
2013-06-09T00:06:10,253 data data data data
2013-06-09T00:06:16,202 data data data data
2013-06-09T00:06:20,750 data data data data
Cioè, con più righe di registro stipate insieme su una riga e le informazioni di registro vengono sovrascritte. Non ho idea di cosa sto sbagliando, quindi mi piacerebbe sapere (A) se è qualcosa di ovvio o (B) qualsiasi suggerimento che può aiutarmi a risolvere questo.
La mia classe logger si presenta così:
public class MyLogger {
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("com.example.mylog");
public void info(String info){
synchronized (log){
log.info(info);
}
}
}
che uso in questo modo:
private CallsLogger callsLogger;
/* ... */
myLogger.info(String.format("%s\t%s\t%s\t%s", "data", "data", "data", "data"));
sto accedendo ~ 40.000 eventi al giorno, e le linee di circa 200 di questi hanno malformati, con qualsiasi cosa da 2 a 11 eventi separati per linea.
mio log4j.xml sembra liks questo:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="mylog" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="logs/mylog.log.%d.gz"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd'T'HH:mm:ss,SSS}\t%m%n"/>
</layout>
</appender>
<logger name="com.example.mylog" additivity="false">
<level value="INFO"/>
<appender-ref ref="mylog"/>
</logger>
<root>
<priority value="ERROR"/>
<appender-ref ref="appender"/>
</root>
</log4j:configuration>
Qualsiasi aiuto molto apprezzato.
myLogger.info (String.Format (, "dati" "% s \ t% s \ t% s \ t% s", "dati" , "data", "data" + "\ n")); prova questo –
@shreyanshjogi La nuova riga è già nel modello di registrazione ('% n'). – Jonathan
potrebbe essere un problema con il buffering e l'accesso parallelo a un logger, provare a forzare il logger a svuotare dopo ogni operazione di registro aggiungendo: nel tag appender – gawi