powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Логер
10 сообщений из 35, страница 2 из 2
Логер
    #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
10 сообщений из 35, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Логер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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