| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > log4j логирование |
| Автор: Samotnik 19.1.2009, 23:12 | ||||
| сабж Есть приложение TCP/IP нужно сделать элементарную вещь каждый новый клиент, который коннектицца к серверу должен писаться в отдельный файл. Т.Е. законнектился первый - для него создался файл и туда пишется все то, что присылает этот клиент. И так для каждого.
Вот этот вывод нужно писать с помощью логов в отдельные файлы Соббсно сам вопрос Как сконфигурять log4j.xml ? Добавлено через 10 минут на данный момент у меня такая вот конфигурация
|
| Автор: COVD 20.1.2009, 01:12 | ||
Т.Е. законнектился первый - для него создался .. логгер. Однако сразу после accept имя пользователя как правило неизвестно. Поэтому мы всех пишем в единый лог. И сохраняем там ip. После того, как имя стало известно, то и имя добавляем в соответствующую позицию. А анализируем логи с помошью программ http://www.baremetalsoft.com/ - нужного пользователя можно выделить с помощью фильтров. И в то же время можно видеть общую картину. ЗЫ Ну, не принижайте без нужды наше ремесло - "элементарная задача" |
| Автор: Samotnik 20.1.2009, 01:46 | ||
| не я не про то Я отлавливаю каждое новое соединение (пример кода я выложил) При каждом новом соединении у меня пишется System.out.println("New connection!"); так вот я спрашиваю как сделать эту же запись тока в разные файлы ??? т.е. сейчас у меня все пишется в один файл (file.log) типа
а мне нужно чтобы эти соединения писались в разные файлы, т.е. к примеру file1.log клиент 1 соед file2.log клиент 2 соед file3.log клиент 3 соед |
| Автор: ivg 20.1.2009, 02:14 |
| Samotnik, я тебя понял, что ты хочешь. Но на каждый сеанс по файлу - по мне, плохая идея. По пользователю - нормально, но сначала аутентификация, а до этого логи куда девать? Того, что ты хочешь - самый нормальный вариант - по IP. Но в текущей реализации log4j конфигурированием этого, по моему, не сделать. Только если написать свой Appender. Но, как уже сказал COVD, с использованием программ для анализа логов, такая необходимость отпадает. |
| Автор: Samotnik 20.1.2009, 02:46 |
возможно но нужно сделать именно так ! неужто нету способов писать все не в один файл в одном аппендере, а в много файлов ? К новому файлу добавлять цифирку ? Добавлено через 1 минуту и 15 секунд окей и как это сделать по ип ? как это сделать ? без сторонних тулзов |
| Автор: vdweller 20.1.2009, 10:31 |
| Статическим конфигом так не сделать скорее всего, тебе придется в рантайме после создания логгера задавать ему имя файла |
| Автор: LSD 20.1.2009, 12:43 | ||
Стандартные аппендеры такого не позволяют. Если бы меня уж так прижало реализовывать такую лабуду, я бы написал бы свой аппендер + NDC. Или динамическое создание категорий и конфигурирование аппендеров из кода. |
| Автор: Samotnik 20.1.2009, 14:03 |
почему лабуду ? вот допустим есть чат который работает по tcp/ip все клиенты проходят через сервер и вот серверу нужно для каждого клиента создавать свой логгер и вести записи для каждого клиента, как в аське - история общения сохраняется для КАЖДОГО юзера с которым ты говорил, а не все разговоры в одном файле Вот и мне нужно сделать то же самое, никакой лабуды тут не вижу, очень полезная штука! Хранить разговоры каждого клиента в отдельном файле Добавлено через 47 секунд вобщем ясно, никто ничего не подскажет |
| Автор: dima32 20.1.2009, 14:21 |
| Если тебе непонятно как сделать свой аппендер - вот тут прмер: http://www.log4j.ru/articles/NewAppender.html Добавлено @ 14:30 ну и как сказал LSD и наверно использование org.apache.log4j.NDC удобно для хранения какой-то id клиента (хотя пойдёт даже Статическая ThreadLocal переменная ) |
| Автор: LSD 21.1.2009, 00:32 | ||
ICQ совсем другое дело. 1. Это не логи, а история сообщений. 2. Количество контактов в ICQ фиксировано, в отличие от количества IP адресов. |
| Автор: Samotnik 21.1.2009, 03:06 |
| dima32, спасибо, только я не понимаю, а что делать со своим аппендером ? Каким образом его применить в нужных мне целях ? За ссылку спасибо |
| Автор: ivg 21.1.2009, 13:46 |
| Samotnik, сохранение истории сообщений в чате - это функционал самого приложения, а не библиотек типа log4j. То есть с помощью log4j так или иначе можно получить то что ты хочешь. Только вот вопрос а надо ли? Я предлагаю отказаться от идеи - хранить это дело в файлах. Сообщения каждого пользователя имеют смысл вместе с сообщениями других участников, так ведь? Если в общем чате несколько десятков человек, в файл каждого из них ты будешь сохранять одну и туже информацию(сообщения всех участников)? Или только одного человека? А как потом собирать всё это в диалог? Нам ведь нужны простые решения так ведь? Если пользователь захочет посмотреть историю весь файл будешь пересылать? Или в твоём случае эти логи нужны только "большому брату"? Короче, если делать как в ICQ, предоставлять пользователю выборку истории за определённый период времени, фильтры на пользователей и т. п. однозначно ИМХО, лучшим местом хранения сообщений будет база данных. |
| Автор: dima32 23.1.2009, 09:13 | ||||||
Примерно так. Как уже было сказано - log4j не обязательно
ну и конфиг будет примерно такой
|