log4j несколько процессов записи содержимого журнала в один файл журнала - PullRequest
0 голосов
/ 21 сентября 2018

Ситуация такова, что несколько процессов используют один и тот же 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

, и файл журнала полностьюхаос. введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...