powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Логер
35 сообщений из 35, показаны все 2 страниц
Логер
    #38783054
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программисты!
Какой логер лучше использовать, не используя БД.
если есть такой вариант как переключение уровня логирования, когда надо он все голит, а когда переключаю то только ошибки,
записей логов будет очень много тысячи и тысячи строк, хотелось бы в БД но отдельного сервера не дадут под него, а боевой для этого использовать опасно,
буду благодарен за любую помощь.
...
Рейтинг: 0 / 0
Логер
    #38783059
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосПрограммисты!
Какой логер лучше использовать, не используя БД.
если есть такой вариант как переключение уровня логирования, когда надо он все голит, а когда переключаю то только ошибки,
записей логов будет очень много тысячи и тысячи строк, хотелось бы в БД но отдельного сервера не дадут под него, а боевой для этого использовать опасно,
буду благодарен за любую помощь.
Да, пофигу вам какой логгер использовать.
Рекомендую вот это прочитать
http://habrahabr.ru/post/113145/
...
Рейтинг: 0 / 0
Логер
    #38783637
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдосПрограммисты!
Какой логер лучше использовать, не используя БД.
если есть такой вариант как переключение уровня логирования, когда надо он все голит, а когда переключаю то только ошибки,
записей логов будет очень много тысячи и тысячи строк, хотелось бы в БД но отдельного сервера не дадут под него, а боевой для этого использовать опасно,
буду благодарен за любую помощь.
Да, пофигу вам какой логгер использовать.
Рекомендую вот это прочитать
http://habrahabr.ru/post/113145/

Я надумал выбрать slf4j,
он работает, выводит в консоль,
но мне бы хотелось его настроить чтобы он делал записи в файл, и менять уровень логирования, не подскажите где находится файл конфигурации его.
...
Рейтинг: 0 / 0
Логер
    #38783641
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос,

Я вам статью уже на русском языке предложил. А вы и ту не осилили. slf4j это не логгер. Это обертка надо логгером. В статье об этом сказано. Обертки нужны чаще всего в библиотеках. Потому что проект может использовать какой-то определенный логгер. И библиотеке надо уметь под него подстраитваться.
...
Рейтинг: 0 / 0
Логер
    #38783872
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдос,

Я вам статью уже на русском языке предложил. А вы и ту не осилили. slf4j это не логгер. Это обертка надо логгером. В статье об этом сказано. Обертки нужны чаще всего в библиотеках. Потому что проект может использовать какой-то определенный логгер. И библиотеке надо уметь под него подстраитваться.
да,
читаю быстро, поверхностно, наверное поэтому и не понял.
спасибо
...
Рейтинг: 0 / 0
Логер
    #38783893
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"25 профессий Маши Филипенко"Маша наклеила девяносто марок, а профессор - только десять. Но зато - все правильно.
...
Рейтинг: 0 / 0
Логер
    #38783937
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему еще никто не написал, что log4j2 вышел?
В настоящее время самым технологичным является именно он.
http://logging.apache.org/log4j/2.x/
...
Рейтинг: 0 / 0
Логер
    #38783946
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfПочему еще никто не написал, что log4j2 вышел?

Подкинули дровишек в Java logging hell?
...
Рейтинг: 0 / 0
Логер
    #38784322
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfПочему еще никто не написал, что log4j2 вышел?Зачем?
...
Рейтинг: 0 / 0
Логер
    #38784840
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczscfПочему еще никто не написал, что log4j2 вышел?

Подкинули дровишек в Java logging hell?

Можно спросить, вот простой логер, если еще добавить по уровням логирования, чем еще лучше будет логер log4j.
что можно еще добавить.


Код: 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.
    public static String logr(String pathlog, String sSessionID, String sPage, String sPayerIP,String sActionType, String sNotes, String sLine){
        String reg = "[3456][0-9]{14,15}";
        Pattern p = Pattern.compile(reg);

        if (pathlog.compareToIgnoreCase("")==0) sSessionID = "/var/backup/";
        if (sSessionID.compareToIgnoreCase("")==0) sSessionID = "0";
        if (sPage.compareToIgnoreCase("")==0) sPage = "-";
        if (sPayerIP.compareToIgnoreCase("")==0) sPayerIP = "-";
        if(sActionType.compareToIgnoreCase("")==0) sActionType = "undef";
        if(sNotes.compareToIgnoreCase("")==0) sNotes = "-";
        if(sLine.compareToIgnoreCase("")==0) sLine = "-";
        if(sNotes.length() > 8000) sNotes.substring(0,7998);
        GregorianCalendar date=new GregorianCalendar();
        date.setTimeZone(TimeZone.getTimeZone("GMT+6"));
        String tActionTime=date.get(Calendar.YEAR)+"-"+
                insSim(2,"0",((date.get(Calendar.MONTH)+1)+""))+"-"+
                insSim(2,"0",(date.get(Calendar.DAY_OF_MONTH)+""))+" "+
                insSim(2,"0",(date.get(Calendar.HOUR_OF_DAY)+""))+":"+
                insSim(2,"0",(date.get(Calendar.MINUTE)+""))+":"+
                insSim(2,"0",(date.get(Calendar.SECOND)+""));
        if(p.matcher(sNotes).find()){
            sNotes=p.matcher(sNotes).replaceAll("--Del card number--");
        }
        try{
            String strSQL = tActionTime +" " + sPage + " ("  + sLine + ") " + sPayerIP  +
                    " "+ sActionType + ": " + sNotes  + " \n";

            RandomAccessFile fw =new RandomAccessFile (pathlog+"/"+sSessionID+".log", "rw");
            byte [] data = strSQL.getBytes();
            fw.seek(fw.length());
            fw.write(data);
            fw.close();

            return "1";
        }catch(Exception e) {
            return "5-"+e;
        }
    }
...
Рейтинг: 0 / 0
Логер
    #38784864
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Про logging hell
Slf4j?

2. Про "Зачем?"
Уважаемый, ну зачем вы существуете? Чтобы писать такие комментарии?

3. Про наивную реализацию логгера
- нет уровней логгирования, множественных логгеров, возможности писать разные строки лога в разные файлы
- неэффективная реализация - файл переоткрывается для каждой строчки лога, нет асинхронной записи в лог
- нет роллинга логов - т.е.разбиение лога на отдельные файлы по дате/времени/размеру
- делать отдельные файлы на разных юзеров - очень много файлов получится, сложнее искать/скармливать анализаторам логов типа Splunk/бэкапить логи.

Могу еще по коду пройтись, если надо - там есть баги, неэффективные вещи и просто незнание core java
...
Рейтинг: 0 / 0
Логер
    #38784875
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf1. Про logging hell
Slf4j?

2. Про "Зачем?"
Уважаемый, ну зачем вы существуете? Чтобы писать такие комментарии?

3. Про наивную реализацию логгера
- нет уровней логгирования, множественных логгеров, возможности писать разные строки лога в разные файлы
- неэффективная реализация - файл переоткрывается для каждой строчки лога, нет асинхронной записи в лог
- нет роллинга логов - т.е.разбиение лога на отдельные файлы по дате/времени/размеру
- делать отдельные файлы на разных юзеров - очень много файлов получится, сложнее искать/скармливать анализаторам логов типа Splunk/бэкапить логи.

Могу еще по коду пройтись, если надо - там есть баги, неэффективные вещи и просто незнание core java
все понял, буду использовать log4j,
большое спасибо за прояснение.
...
Рейтинг: 0 / 0
Логер
    #38784897
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосМожно спросить, вот простой логер, если еще добавить по уровням логирования, чем еще лучше будет логер log4j.
что можно еще добавить.
Да, всем лучше. У вас не читаемый, не поддерживаемый, не конфигурируемый тормозной код с багами.
Открываете список "фич" любого логгера и там видите всё чем он лучше вашего.
...
Рейтинг: 0 / 0
Логер
    #38784911
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдосМожно спросить, вот простой логер, если еще добавить по уровням логирования, чем еще лучше будет логер log4j.
что можно еще добавить.
Да, всем лучше. У вас не читаемый, не поддерживаемый, не конфигурируемый тормозной код с багами.
Открываете список "фич" любого логгера и там видите всё чем он лучше вашего.
спасибо.
...
Рейтинг: 0 / 0
Логер
    #38786058
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос2. Про "Зачем?"
Уважаемый, ну зачем вы существуете? Чтобы писать такие комментарии?Те, кто хоть как-то следит за используемыми библиотеками, должен быть в курсе и существования проекта и выхода его бета-версий.
...
Рейтинг: 0 / 0
Логер
    #38786138
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишите все сообщения в stdout (или в stderr).
Чтобы писать логи в файл, запускайте программу так
Код: sql
1.
java -jar proga.jar > mylog.txt


Чтобы писать в syslog - так
Код: sql
1.
java -jar proga.jar | logger


Используя велосипедные логгеры, вы поощряете их авторов продолжать свое безумное творчество (java logging hell) и увеличиваете количество энтропии в мире.
...
Рейтинг: 0 / 0
Логер
    #38786177
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪПишите все сообщения в stdout (или в stderr)Проблема не в том, чтобы (быстро) выдать сообщения на консоль, а в том, чтобы ранжировать их по уровням и избирательно выключать по категориям не меняя ни строчки кода.

P.S. На форматирование и многопоточность отдельных пунктов не заводим.

P.P.S. Перенаправление даже обхихикивать не буду.
...
Рейтинг: 0 / 0
Логер
    #38786670
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczРекомендую вот это прочитать
http://habrahabr.ru/post/113145/

Кстати, давано такой вменяемой статьи по Яве не читал...
Спасибо.
...
Рейтинг: 0 / 0
Логер
    #38787126
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЙуный джавистЪПишите все сообщения в stdout (или в stderr)Проблема не в том, чтобы (быстро) выдать сообщения на консоль, а в том, чтобы ранжировать их по уровням и избирательно выключать по категориям не меняя ни строчки кода.
Мы делали возможность включать разные уровни логирования через админку в зависимости от разных условий - например можно было поставить более высокий уровень логирования какому-то отдельному клиенту. В начале обработки запроса мы вычисляли максимальный уровень логирования и клали его в thread-local переменную.
Никакой логгинг фреймворк не может и не должен знать о такой логике - она относится к приложению. Более того, вызывая
Код: java
1.
org.apache.log4j.Logger.getLogger().info(...)


вы теряете возможность впоследствии реализовать какую-то сложную логику логгинга.
Затем, java приложение не должно думать о том, куда заапендить сообщение - это не его responsibility и должно настраиваться админами при деплое. Админы любят, когда приложение использует стандартные системные средства и не любят изучать какие-то самопальные xml-конфиги. В линуксе, например, в самой популярной инит-системе systemd по дефолту считается, что приложение пишет логи в stdout, и systemd собирает эти логи. Для админа это очень удобно - логи со всех приложений оказываются в одном месте.
...
Рейтинг: 0 / 0
Логер
    #38787170
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ,
"Что русскому хорошо, то немцу - смерть" )
Программисты и админы часто любят разные вещи )
...
Рейтинг: 0 / 0
Логер
    #38787250
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪПишите все сообщения в stdout (или в stderr).
Чтобы писать логи в файл, запускайте программу так
Код: sql
1.
java -jar proga.jar > mylog.txt


Чтобы писать в syslog - так
Код: sql
1.
java -jar proga.jar | logger


Используя велосипедные логгеры, вы поощряете их авторов продолжать свое безумное творчество (java logging hell) и увеличиваете количество энтропии в мире.
Поток error надо ловить через дескриптор #2.
Код: java
1.
java -jar proga.jar > mylog.txt 2>myerror.log
...
Рейтинг: 0 / 0
Логер
    #38787279
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪНикакой логгинг фреймворк не может и не должен знать о такой логике - она относится к приложению. Более того, вызывая
Код: java
1.
org.apache.log4j.Logger.getLogger().info(...)

вы теряете возможность впоследствии реализовать какую-то сложную логику логгинга."Смешались в кучу кони, люди".
Во-первых, пишут:
Код: sql
1.
org.apache.log4j.Logger log = log.apache.log4j.LogManager.getLogger(Имя.class);


Во-вторых, логика протоколирования проектируется вместе с приложением, т.к. в противном случае у вас будет куча:
Код: sql
1.
2.
log.info("сложно собираемая строка");
log.debug("ещё более сложно собираемая строка");

что сильно замусорит основной код.Затем, java приложение не должно думать о том, куда заапендить сообщение - это не его responsibility и должно настраиваться админами при деплое.Что характерно, именно это и обеспечивает log4j.Админы любят, когда приложение использует стандартные системные средства и не любят изучать какие-то самопальные xml-конфиги.То-то, смотрю, все выкинули апач. Несомненно, из-за его xml-подобного конфига.В линуксе, например, в самой популярной инит-системе systemd по дефолту считается, что приложение пишет логи в stdout, и systemd собирает эти логи.А в винде - так не считается. Именно поэтому существует jsvc для nix-ов и procrun - для виндов.Для админа это очень удобно - логи со всех приложений оказываются в одном месте.Это удобно пока всё, что нужно админу - информационные сообщения о запуске-остановке сервиса и предупреждения о нехватке (какого-нибудь) пула.
...
Рейтинг: 0 / 0
Логер
    #38787315
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идеальная система логирования должна обеспечивать следующие возможности

- не выполнение своего кода, кода заданный уровень сообщения не требуется (в том числе связанные с генерацией строки);
- переключение необходимый уровень сообщений на лету без остановки приложения;
- мультиплицированной раскладку сообщений по разным журналам;
- ротацию журналов с разными правилами для разных сообщений (например info удаляются из файла через два часа, а error держатся месяц, но лучше не только по уровням)
- генерация различных событий по данным журнала (как-то количество обращений к системе в минуту превысило порог)
- запуска различных триггеров по событиям
- легкость в настройке и управлении
- не допускать утечки информации.

Странно только почему ее до сих пор никто не сделал.
...
Рейтинг: 0 / 0
Логер
    #38787369
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевИдеальная система логирования должна обеспечивать следующие возможности

- не выполнение своего кода, кода заданный уровень сообщения не требуется (в том числе связанные с генерацией строки);
- переключение необходимый уровень сообщений на лету без остановки приложения;
- мультиплицированной раскладку сообщений по разным журналам;logback, log4j2. log4j - может, но с ограничениями. - ротацию журналов с разными правилами для разных сообщений (например info удаляются из файла через два часа, а error держатся месяц, но лучше не только по уровням)И как вы представляете "удаление записей" из плоских файлов???
При том, что "дублировать warn и выше в отдельный приёмник" - умеют все. - генерация различных событий по данным журнала (как-то количество обращений к системе в минуту превысило порог)Т.е. включили трассировку и всё выключилось???
Хотя "Last message repeated # times" я видел. Вполне полезная вещь. - запуска различных триггеров по событиям
- легкость в настройке и управленииФильтры/события - у всех есть. - не допускать утечки информации.И как логгеру узнать, что в эту строку программист упихнул пароль открытым текстом???
...
Рейтинг: 0 / 0
Логер
    #38787377
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
+1
первые 3 они умеют.
А остальные imho уже дело админских утилит а-ля конвейров Над лог-журналами.
Error отсылать по мылу тоже умеют.
...мониторинг и логирование - разные вещи.
Хватит улучшать логгеры )) LOL
...
Рейтинг: 0 / 0
Логер
    #38787379
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевИдеальная система логирования должна обеспечивать следующие возможности

- не выполнение своего кода, кода заданный уровень сообщения не требуется (в том числе связанные с генерацией строки);
- переключение необходимый уровень сообщений на лету без остановки приложения;
- мультиплицированной раскладку сообщений по разным журналам;
- ротацию журналов с разными правилами для разных сообщений (например info удаляются из файла через два часа, а error держатся месяц, но лучше не только по уровням)
- генерация различных событий по данным журнала (как-то количество обращений к системе в минуту превысило порог)
- запуска различных триггеров по событиям
- легкость в настройке и управлении
- не допускать утечки информации.

Странно только почему ее до сих пор никто не сделал.
Для начала бы системы логгирования научились бы не выдавать внутреннее API (все эти методы trace/debug/warn/error etc), в которые можно запихнуть сообщение, а человеческие методы. Просто сейчас, когда нужны очень подробные сообщения, добавление сообщений мусорит код.
А именно
Код: java
1.
2.
3.
4.
  private void processSomething(...) {
     ....
    logger.error(<Здесь должно быть очень подробное сообщение, которое упростить никак нельзя т.к. ситуация крайне неприятная>, context0, context1, context2);
  }


Когда можно
Код: java
1.
2.
3.
4.
  private void processSomething(...) {
     ....
    infrastructureLogger.failedPrettyHard(context0, context1, context2);
  }



Пока решением этой задачи ни один мейнстрим логгер не озабочен и единственный известный (мне) проект, который эту проблему решает это JBoss Logging . Никогда правда его не использовал и оборачивал все логгеры руками (jboss logging это автоматизирует).
...
Рейтинг: 0 / 0
Логер
    #38787390
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев - ротацию журналов с разными правилами для разных сообщений (например info удаляются из файла через два часа, а error держатся месяц, но лучше не только по уровням)

Это возможно реализовать на базе некоторых Appenders вроде JDBC-шного.
Удаление-же из текстового файла (коим является лог в 99% случаев) INFO-сообщений
мне представляется сомнительным занятием. Никто так не делает и это не является
best-practices нигде.

Сергей Арсеньев - запуска различных триггеров по событиям

Каждая предметная область имеет свою терминологию. Java на уровне
языка и на уровне машины не имеет возможностей. В скобках замечу
что "триггер" в системотехнике и триггер в базах данных это совершенно
разные вещи. Поэтому требуется пояснение ЧТО такое триггер
в данном примере и как мы его должны(можем) реализовать применительно
к логгированию. Лучше с примерами и исходным кодом.

Сергей Арсеньев - не допускать утечки информации.

Подобные требования предъявляют к софту когда проверяют
его на пригодность к работе в особых услових или в особых ведомствах.
Сертификация там... соответствие ГОСТ-ам.
Могу предположить что софт который сертифицируется на безопасность
оперирует такими сущностями как принципал, сертификат, ключ, подпись e.t.c. Я не знаю
библиотек логгирования которые-бы это использовали. Вобщем как-то
всё это мимо кассы. Чес слово мимо кассы.

Не стоит вешать на логгирование всяких собак. У него (логгирования) весьма
узкие задачи.
...
Рейтинг: 0 / 0
Логер
    #38787392
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaДля начала бы системы логгирования научились бы не выдавать внутреннее API (все эти методы trace/debug/warn/error etc), в которые можно запихнуть сообщение, а человеческие методы. Просто сейчас, когда нужны очень подробные сообщения, добавление сообщений мусорит код.Шаблон "Фасад (декоратор)"
Никакая библиотека не может предусмотреть не то что "всех вариантов", но даже "часто используемые" - слишком уж различаются потребности.
...
Рейтинг: 0 / 0
Логер
    #38787402
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТо-то, смотрю, все выкинули апач. Несомненно, из-за его xml-подобного конфига.

Доля nginx неуклонно растет, а доля апача неуклонно снижается. В nginx конфиг как раз не xml. Хотя, разумеется, дело тут не в формате конфига.
авторА в винде - так не считается. Именно поэтому существует jsvc для nix-ов и procrun - для виндов.
Никогда о них раньше не слышал. Почитал - оказалось что оба считают stdout процесса его логом.
авторЭто удобно пока всё, что нужно админу - информационные сообщения о запуске-остановке сервиса и предупреждения о нехватке (какого-нибудь) пула.

Почему? Например, чтобы настроить какое-нибудь информирование об ошибках сервиса по SMS, как раз удобно если логи от всех серверов и демонов оказываются в одном месте.
...
Рейтинг: 0 / 0
Логер
    #38787408
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪкак раз удобно если логи от всех серверов и демонов оказываются в одном месте.
каким образом?
одно место - это ОДНА папка?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
debian
/var/log/dmesg
/var/log/boot
...
$GLASSFISH_HOME/domains/domain1/logs/server.log
$GLASSFISH_HOME/domains/domainN
..
apps/mapviewer.war/WEB-INF/log/mapviewer_10.log
..
/home/oracle/app/oracle/diag/tnslsnr/Debian-76-wheezy-64-minimal/listener/alert/log.xml
/home/oracle/app/oracle/product/12.1.0/dbhome_1/startup.log
и т.д.
админы _вроде_ не плачут про разные места
...
Рейтинг: 0 / 0
Логер
    #38787476
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪНикогда о них раньше не слышал. Почитал - оказалось что оба считают stdout процесса его логом.Вообще-то, оба перенаправляют два стандартных потока вывода в файлы.
Их вообще не колышет лог там или цитаты из библии.
...
Рейтинг: 0 / 0
Логер
    #38787477
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪПочему? Например, чтобы настроить какое-нибудь информирование об ошибках сервиса по SMS, как раз удобно если логи от всех серверов и демонов оказываются в одном месте.И как это противоречит тому, что одно место удобнее пока событий немного?
...
Рейтинг: 0 / 0
Логер
    #38787492
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovschwaДля начала бы системы логгирования научились бы не выдавать внутреннее API (все эти методы trace/debug/warn/error etc), в которые можно запихнуть сообщение, а человеческие методы. Просто сейчас, когда нужны очень подробные сообщения, добавление сообщений мусорит код.Шаблон "Фасад (декоратор)"
Никакая библиотека не может предусмотреть не то что "всех вариантов", но даже "часто используемые" - слишком уж различаются потребности.
Вот поэтому в java 100500 оберток над элементарной задачей - ведь можно написать декоратор. В итоге каждая команда на каждом проекте его пишет...
Сколько уже пытаются написать логгер для java 15 лет или больше? И каждый раз пишут очередной фасадик.

Задача системы логгирования предоставить инфраструктуру(за 15 лет-то уже можно было бы научиться куда угодно писать сообщения) и УДОБНЫЙ интерфейс для ее использования.
Нет ни одной причины, чтобы в 2014 году из
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Logger
public interface ConnectionLogger {
  
  @Info
  @Message(...)
  void connectionStarted(ConnectionId id);

  @Error
  @Message(...)
  void connectionFailed(ConnectionId id, Throwable t);

  @Info
  @Message(...)
  void connectionClosed(ConnectionId id);

  ....
}


не генерить код для логгера.
...
Рейтинг: 0 / 0
Логер
    #38787515
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaНет ни одной причины, чтобы в 2014 году из
Код: java
1.
2.
3.
4.
5.
6.
7.
@Logger
public interface ConnectionLogger {
  
  @Info
  @Message(...)
  void connectionStarted(ConnectionId id);
}


не генерить код для логгера.Дъявол, как обычно, кроется в многоточиях.
Протоколирование требуется для того, чтобы выдать (краткую) информацию о работе приложения и обеспечить "посмертную" отладку.
Первую задачу, худо-бедно, могут решить аннотации, а вот вторую ...
Если "фигня случилась", а всё что у нас есть - отладочный лог, то в этом логе должно быть подробное отражения состояния системы. Которое может быть сколь угодно сложным и запутанным.
Если бы существовал способ автоматизации этого процесса, то первое для чего он был бы использован - заменить программистов кодогенератором.
...
Рейтинг: 0 / 0
Логер
    #38787845
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы добавил насчет удобных логгеров.

Имеет смысл использовать оба варианта названий логгеров - и по пакетам, и специальные именные логгеры.

Логгеры по пакетам используются, где нужно вывести строчку "на всякий случай" - для упрощения поиска ошибок.
А именные заворачиваются в враппер:
Код: java
1.
2.
3.
4.
5.
6.
class Loggers {
   void shitHappened(Exception e, String msg, String...params);
   void dbQuery(String msg, String...params);
   void userAction(String msg, String...params);
   void requestResponse(String msg, String...params);
}



Примерно так
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Логер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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