Посоветуйте логгер

_Vasilisk_
Дата: 27.08.2019 15:23:49
Хочется логгер, с функциональностью джавовского log4j.

Для тех кто не знаком рассказываю. Есть четыре сущности:
0. Сообщение
1. Logger
2. Appender
3. Formatter

Сообщение имеет разные уровни важности (от фатальной ошибки, до дебаг-инфо). В логгере мы указываем до какого уровня мы принимаем сообщения. К логгеру привязаны один или более аппендеров, которые как-то это сообщение фиксирует. Кто в текстовый файл пишет, кто в сокет, кто в XML... Ну а само сообщение аппендер преобразует в информацию при помощи форматтера.

Логгеры имеют древовидную иерархию. Поэтому задав настройки для одного уровня, все дети их наследуют (если у детей не сказано иное).

Все настройки могут подниматься из файла.

Ну и, конечно, многопоточная работа.

Кто-то видел такое для Delphi?


С уважением, Vasilisk
zinpub
Дата: 27.08.2019 15:28:01
_Vasilisk_,

Ну дык log4Delphi - это обёртка для java'вского
_Vasilisk_
Дата: 27.08.2019 15:35:39
zinpub
log4Delphi
Спасибо. Буду щупать
X-Cite
Дата: 27.08.2019 15:36:36
_Vasilisk_
Хочется логгер, с функциональностью джавовского log4j.

Для тех кто не знаком рассказываю. Есть четыре сущности:
0. Сообщение
1. Logger
2. Appender
3. Formatter

Сообщение имеет разные уровни важности (от фатальной ошибки, до дебаг-инфо). В логгере мы указываем до какого уровня мы принимаем сообщения. К логгеру привязаны один или более аппендеров, которые как-то это сообщение фиксирует. Кто в текстовый файл пишет, кто в сокет, кто в XML... Ну а само сообщение аппендер преобразует в информацию при помощи форматтера.

Логгеры имеют древовидную иерархию. Поэтому задав настройки для одного уровня, все дети их наследуют (если у детей не сказано иное).

Все настройки могут подниматься из файла.

Ну и, конечно, многопоточная работа.

Кто-то видел такое для Delphi?


С уважением, Vasilisk


Да.. Наша разработка... Пока не выкладывали на github (в планах)
Полностью абстрагирована и настраиваемая.. Можно любую абстракцию собственной реализацией подменять при желании...
Расширяется легко...
X-Cite
Дата: 27.08.2019 15:42:01
Работает под Win32/Win64. Под Android все успешно собирается, но не проверяли корректность.. Остальные ОС в планах подкрутить.
И да, мы не поддерживаем зоопарк версий... Всегда есть только пакет под последнюю редакцию, но теоретически в XE7 еще соберется... В XE6 не помню.. обернули ли System.Hash в директиву или убрали уже..
_Vasilisk_
Дата: 27.08.2019 15:43:02
zinpub
log4Delphi
В топку. Многопоточности нет
      instances := TStringList.Create;
........
class function TLogger.GetInstance(const AName : String) : TLogger;
var
   index : Integer;
   logger : TLogger;
begin
   index := Instances.IndexOf(AName);
   if (index < 0) then begin
      logger := TLogger.Create(AName);
      instances.AddObject(AName, logger);
      Result := logger;
   end else
   Result := TLogger(instances.Objects[index]);
end;
_Vasilisk_
Дата: 27.08.2019 15:44:06
X-Cite
Пока не выкладывали на github
Тогда какой смысл о ней писать?
X-Cite
Дата: 27.08.2019 15:48:23
_Vasilisk_
X-Cite
Пока не выкладывали на github
Тогда какой смысл о ней писать?

В процессе подготовки выкладки... Анонс по сути)
Надо еще одно изменение сделать и можно отдавать в массы..
_Vasilisk_
Дата: 27.08.2019 15:50:05
X-Cite
Надо еще одно изменение сделать
Так тогда сроки озвучь
zinpub
Дата: 27.08.2019 16:25:17
_Vasilisk_
zinpub
log4Delphi
В топку. Многопоточности нет
      instances := TStringList.Create;
........
class function TLogger.GetInstance(const AName : String) : TLogger;
var
   index : Integer;
   logger : TLogger;
begin
   index := Instances.IndexOf(AName);
   if (index < 0) then begin
      logger := TLogger.Create(AName);
      instances.AddObject(AName, logger);
      Result := logger;
   end else
   Result := TLogger(instances.Objects[index]);
end;


Ну в CS две секунды завернуть...