Ситуация такова, что несколько процессов используют один и тот же log4j.propery для записи файла журнала. Но когда размер файла журнала равен макс.Это нужно перевернуть, чтобы эти процессы были хаосом. Как я могу это решить.Вот пролонгация Java-кода.
public void rollOver() {
LogLog.debug("rolling over count=" + ((CountingQuietWriter) this.qw).getCount());
LogLog.debug("maxBackupIndex=" + this.maxBackupIndex);
if (this.maxBackupIndex > 0) {
File file = new File(this.fileName + '.' + this.maxBackupIndex);
if (file.exists()) {
file.delete();
}
File target;
for (int e = this.maxBackupIndex - 1; e >= 1; --e) {
file = new File(this.fileName + "." + e);
if (file.exists()) {
target = new File(this.fileName + '.' + (e + 1));
LogLog.debug("Renaming file " + file + " to " + target);
file.renameTo(target);
}
}
target = new File(this.fileName + "." + 1);
this.closeFile();
file = new File(this.fileName);
LogLog.debug("Renaming file " + file + " to " + target);
file.renameTo(target);
}
try {
this.setFile(this.fileName, false, this.bufferedIO, this.bufferSize);
} catch (IOException arg3) {
LogLog.error("setFile(" + this.fileName + ", false) call failed.", arg3);
}
}
Я сделал expriment.Запустите 2 JVM для регистрации файлов.Они регистрируют контент, используя тот же app4 log4j, и входят в тот же файл.
import java.io.IOException;
import org.apache.log4j.Layout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
public class LogMain {
public static void main(String[] args) {
Logger logger;
try {
Layout layout = new PatternLayout("[%d{yyyy-MM-dd HH:mm:ss,SSS}][%p][%C][Line:%L][%t] %m%n");
RollingFileAppender appender = new RollingFileAppender(layout, "D://log/test.log");
appender.setName("monitor_log");
appender.setMaxFileSize("1MB");
appender.setMaxBackupIndex(100);
appender.setEncoding("UTF-8");
logger = Logger.getLogger("MONITOR_LOG");
logger.removeAllAppenders();
logger.setAdditivity(false);
logger.addAppender(appender);
logger.setLevel(Level.INFO);
} catch (IOException e) {
throw new RuntimeException(e);
}
int i = 0;
while (i < 100000) {
logger.error(i);
i++;
}
System.out.println("success");
}
}
, затем я запускаю этот Java-код в буксирующем окне cmd.
java -cp .;D:\tts9\tts9\workspace\LogHandle\log4j-1.2.8.jar LogMain
, и файл журнала полностьюхаос. введите описание изображения здесь