powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Log4j в разные файлы
35 сообщений из 35, показаны все 2 страниц
Log4j в разные файлы
    #38796263
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно реализовать чтобы log4j записывал данные в разные файлы разные сессии,
вообще надо чтобы с jsp страницы записывал лог в зависимости от сессии,
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796284
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосКак можно реализовать чтобы log4j записывал данные в разные файлы разные сессии,
вообще надо чтобы с jsp страницы записывал лог в зависимости от сессии,
http://wiki.apache.org/logging-log4j/NDCvsMDC

У вас ошибка уже в постановке задачи. Одновременная запись в разные файлы снижает производительность логирования.
Проще логировать id сессии в каждом сообщении и при надобности фильтровать лог, чем сразу бить лог по какой-то одной категории на файлы.
И не вздумайте создавать новый логгер с новым именем на каждую сессию. В log4j это может оказаться чревато утечками памяти.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796291
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, ага, а то звучит как "на каждого пользователя по экземпляру СУБД"
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796295
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосКак можно реализовать чтобы log4j записывал данные в разные файлы разные сессии,
вообще надо чтобы с jsp страницы записывал лог в зависимости от сессии,Не надо.
Какой-нибудь a(pache)b(ench), за несколько секунд, с лёгкостью создаёт десятки тысяч сессий.
Вам действительно требуется "тридцать тыщ одних курьеров"? А вы хорошо подумали?
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796301
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдосКак можно реализовать чтобы log4j записывал данные в разные файлы разные сессии,
вообще надо чтобы с jsp страницы записывал лог в зависимости от сессии,
http://wiki.apache.org/logging-log4j/NDCvsMDC

У вас ошибка уже в постановке задачи. Одновременная запись в разные файлы снижает производительность логирования.
Проще логировать id сессии в каждом сообщении и при надобности фильтровать лог, чем сразу бить лог по какой-то одной категории на файлы.
И не вздумайте создавать новый логгер с новым именем на каждую сессию. В log4j это может оказаться чревато утечками памяти.

у меня стоит логер сейчас который за секунду открывает, записывает и закрывает файл для каждой строки, на каждый файл около ста строк,
и одновременно на несколько файлов, для каждой сессии,
не сильно критично.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796308
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
ab -k -c 100 -n 1000  http://сервер/ресурс 
Вот так это может быть в реальном мире.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796317
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосу меня стоит логер сейчас который за секунду открывает, записывает и закрывает файл для каждой строки, на каждый файл около ста строк,
и одновременно на несколько файлов, для каждой сессии,
не сильно критично.
У вас сделано плохо и вы снова хотите сделать плохо, но другим способом. Делайте хорошо. Плохо само выйдет.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796340
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Код: plaintext
ab -k -c 100 -n 1000  http://сервер/ресурс 
Вот так это может быть в реальном мире.
не понял что это и для чего
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796341
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосу меня стоит логер сейчас
очень странно...
Какой логгер?
Если логгер из сабжа, то весь инет забит вот этим для него
Код: java
1.
		<load-on-startup>1</load-on-startup>


Т.е. он стартует первым сервлетом
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796346
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это простой способ завалить некоторые веб-приложения.
Ваше выглядит реальным кандидатом на провал простейшего стресс-теста.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796351
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдосу меня стоит логер сейчас который за секунду открывает, записывает и закрывает файл для каждой строки, на каждый файл около ста строк,
и одновременно на несколько файлов, для каждой сессии,
не сильно критично.
У вас сделано плохо и вы снова хотите сделать плохо, но другим способом. Делайте хорошо. Плохо само выйдет.
это как бы требуют люди выше меня,
чтобы лог каждой сессии был в отдельном файле.
придется так сделать, но пока не нашел способа этого реализовать в log4j
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796364
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосэто как бы требуют люди выше меня,
какой логгер был у них раньше в проекте?
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796370
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосэто как бы требуют люди выше меня,

Не все знают чего хотят. Поэтому нужно сначала понять какая именно проблема решается. А потом уже найти компромисс, который и проблему решает и проект не ломает.
Можно, например, использовать обычное логирование, но раз в день сплитить лог файлы по id сессии. Сессию нужно забить в шаблон форматирования сообщения.

Елдосчтобы лог каждой сессии был в отдельном файле.
придется так сделать, но пока не нашел способа этого реализовать в log4j
Скорее всего нужно реализовать какой-нибудь свой класс фреймверка. Готового решения не видно.
Например FileAppender и прокидывать в него id сессии через NDC или ThreadLocal. И там уже использовать id сессии для логирования в определенный файл.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796376
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосэто как бы требуют люди выше меня,
чтобы лог каждой сессии был в отдельном файле.Не надо делать неразумные хотелки.
Уточните задачу и реализуйте требуемое настройкой формата и разбором (единого) лога.

P.S. "Нет, вы посмотрите на этого поца! Всю Одессу удовлетворяет, а его, видите ли - нет!" (ц) старый анекдот.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796411
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосКак можно реализовать чтобы log4j записывал данные в разные файлы разные сессии,
вообще надо чтобы с jsp страницы записывал лог в зависимости от сессии,
Обычными файловыми операциями я-бы реализовал эту задачу быстрее и проще чем Log4j.

По Log4j надо почитать как динамически (на ходу) создавать и грохать аппендеры (
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html)
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796682
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдосэто как бы требуют люди выше меня,

Не все знают чего хотят. Поэтому нужно сначала понять какая именно проблема решается. А потом уже найти компромисс, который и проблему решает и проект не ломает.
Можно, например, использовать обычное логирование, но раз в день сплитить лог файлы по id сессии. Сессию нужно забить в шаблон форматирования сообщения.

Елдосчтобы лог каждой сессии был в отдельном файле.
придется так сделать, но пока не нашел способа этого реализовать в log4j
Скорее всего нужно реализовать какой-нибудь свой класс фреймверка. Готового решения не видно.
Например FileAppender и прокидывать в него id сессии через NDC или ThreadLocal. И там уже использовать id сессии для логирования в определенный файл.
Хорошая идея чтобы раз в день его распиливать,
можно предложить такой вариант для них.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796684
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕлдосКак можно реализовать чтобы log4j записывал данные в разные файлы разные сессии,
вообще надо чтобы с jsp страницы записывал лог в зависимости от сессии,
Обычными файловыми операциями я-бы реализовал эту задачу быстрее и проще чем Log4j.

По Log4j надо почитать как динамически (на ходу) создавать и грохать аппендеры (
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html)
у меня так реализовано, но думаю что log4j будет работать быстрее
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796686
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосmaytonпропущено...

Обычными файловыми операциями я-бы реализовал эту задачу быстрее и проще чем Log4j.

По Log4j надо почитать как динамически (на ходу) создавать и грохать аппендеры (
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html)
у меня так реализовано, но думаю что log4j будет работать быстрее
Ты себе в уме когда-нибудь представлял стек операций при работе с файлами
(к примеру через java.io.FileWriter) и стек с использованием технологий Log4j ?
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38796714
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар. Варианта нет. Либо твои старшие никогда не видели этот логгер. Либо пиши именно велосипед совсем без него. Событие конец сессии - запись в файл....пока диск не засрем.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38797336
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Аффтар. Варианта нет. Либо твои старшие никогда не видели этот логгер. Либо пиши именно велосипед совсем без него. Событие конец сессии - запись в файл....пока диск не засрем.

я надеюсь что это возможно, хоть как то
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38797438
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай. new FileAppender(..) и погнал!

Чего философствовать? В топике скушно стало.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38797445
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдося надеюсь что это возможно, хоть как то
"Программист может всё, лишь бы это было нужно))"
....
уже бы написал давно.
На событии конца сессии застрял?
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38797640
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Елдося надеюсь что это возможно, хоть как то
"Программист может всё, лишь бы это было нужно))"
....
уже бы написал давно.
На событии конца сессии застрял?
я не понимаю о чем вы говорите,
мне это очень нужно, и времени совсем нету, реально совсем нету, ведь на это как минимум пол дня уйдет,
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38797664
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Два часа браток. Два часа. Давай API в зубы и Go! Go!
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38797698
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос,
Если время не дают, значит это им не нужно
Нет логики.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798333
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДва часа браток. Два часа. Давай API в зубы и Go! Go!
спасибо.
аппендер сделал но что с ним дальше творить не понял.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
public class BeepAppender extends AppenderSkeleton {

    @Override
    protected void append(LoggingEvent event) {
        String path = "/var/www/o/log/";
        String s  = (String) event.getMessage();
        String[] strings = s.split(" ");
        File file = new File(path + strings[10]);
        if(!file.exists()) {
            try {
                file.createNewFile();
                PrintWriter out = null;
                out = new PrintWriter(file.getAbsoluteFile());
                out.print(s);
               
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else {
            try {
                RandomAccessFile rfile = new RandomAccessFile(path + strings[10], "rw");
                rfile.writeBytes(s + "\n");
                rfile.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void close() {

    }

    @Override
    public boolean requiresLayout() {
        return false;
    }
}


вот собственно аппендер,
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798336
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосmaytonДва часа браток. Два часа. Давай API в зубы и Go! Go!
спасибо.
аппендер сделал но что с ним дальше творить не понял.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
public class BeepAppender extends AppenderSkeleton {

    @Override
    protected void append(LoggingEvent event) {
        String path = "/var/www/o/log/";
        String s  = (String) event.getMessage();
        String[] strings = s.split(" ");
        File file = new File(path + strings[10]);
        if(!file.exists()) {
            try {
                file.createNewFile();
                PrintWriter out = null;
                out = new PrintWriter(file.getAbsoluteFile());
                out.print(s);
               
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else {
            try {
                RandomAccessFile rfile = new RandomAccessFile(path + strings[10], "rw");
                rfile.writeBytes(s + "\n");
                rfile.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void close() {

    }

    @Override
    public boolean requiresLayout() {
        return false;
    }
}


вот собственно аппендер,
не ругайтесь сильно, еще не тестировал, и пока только примерно представляю как это работает.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798360
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RandomAccessFile не нужен.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798373
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonRandomAccessFile не нужен.
это почему?
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798438
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосmaytonRandomAccessFile не нужен.
это почему?
как и куда потом эти логи?
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798471
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Елдоспропущено...

это почему?
как и куда потом эти логи?
на одну сессию один лог файл, этот лог останется пока я сам не удалю.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38798632
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосmaytonRandomAccessFile не нужен.
это почему?
Для задач записи текста в текстовый файл достаточно PrintWriter.
Особенно с указанием опции кодовой страницы.

RandomAccess - для произвольного позиционирования (обычно в двоичных)
структурированных.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38799722
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕлдоспропущено...

это почему?
Для задач записи текста в текстовый файл достаточно PrintWriter.
Особенно с указанием опции кодовой страницы.

RandomAccess - для произвольного позиционирования (обычно в двоичных)
структурированных.
Понятно спасибо
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38799752
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо log4j взять logback. Он умеет так делать из коробки.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    <appender name="FILE_PER_SESSION" class="ch.qos.logback.classic.sift.SiftingAppender">
        <timeout>5</timeout>
        <discriminator>
            <key>session</key>
            <defaultValue>all</defaultValue>
        </discriminator>
        <sift>
            <appender name="FILE-${session}" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${catalina.base}/logs/rssfrontend/${session}.log</file>
                <append>true</append>
                <layout>
                    <pattern>[%-5level] %date{HH:mm:ss.SSS} %logger{36} %msg%n</pattern>
                </layout>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>${catalina.base}/logs/rssfrontend/${session}.%d{yyyy-MM-dd}.log</fileNamePattern>
                    <maxHistory>15</maxHistory>
                </rollingPolicy>
            </appender>
        </sift>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE"/>
        <appender-ref ref="FILE_PER_SESSION"/>
    </root>



Кстати, мне почему-то кажется, и log4j должен уметь такое.
...
Рейтинг: 0 / 0
Log4j в разные файлы
    #38800279
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvВместо log4j взять logback. Он умеет так делать из коробки.
А оно точно будет работать?
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Log4j в разные файлы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]