Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2019, 21:00   #1
alex.web
Новичок
Джуниор
 
Регистрация: 11.08.2019
Сообщений: 1
По умолчанию Логгер сообщений - ООП

Всем привет! Помогите пожалуйста решить задачу)

Необходимо написать логгер сообщений с возможностью "схлопывания" групп сообщений в "блоки"

Доступные методы:

1) message(string $msg) // логирует сообщение

2) beginBlock(string $blockName) // открывает блок сообщений и делает его текущим

3) endBlock() // закрывает текущий блок сообщений

Требования к логгеру:

1) Хранить данные оптимально, без копирования массивов.

2) Вложенность блоков не ограничена

4) Использовать указатели везде где это возможно

Пример кода:

$logger = new Logger();

$logger->message("begin");


$logger->beginBlock("block1");

$logger->message("msg1")

$logger->message("msg2");


$logger->beginBlock("inheritedBlock");

$logger->message("inhMsg1");


$logger->beginBlock("inheritedBlock2");

$logger->message("deepMessage");

$logger->endBlock(); // closes "inheritedBlock2"


$logger->message("inhMsg2");

$logger->endBlock(); // closes "inheritedBlock"


$logger->message("msg3");

$logger->endBlock(); // closes "block1"


$logger->message("end");


$result = $logger->getMessages();

Ожидается, что переменная $result будет содержать следующее:

[

"begin",

[

"name": "block1",

"messages": [

"inhMsg1",

[

"name": "inheritedBlock2",

"messages": ["deepMessage"]

],

"inhMsg2"

],

"msg3"

],

"end"

]

На данный момент сделано только это:

class Log
{
static private $fplog;

public static function message($msg)
{
$flogname = 'log.txt';
self::$fplog = fopen($flogname,'ab');
$time = '['.date('Y-m-d H:i:s').'] ';
fwrite(self::$fplog,$time . strval($msg) . "\n");
fclose(self::$fplog);
}
}
alex.web вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Логгер TIdMappedPortTCP. AndyJOKER C++ Builder 1 23.01.2017 09:04
Посоветуйте логгер Tahoma Visual C++ 4 06.03.2016 22:44
[вопрос] Логгер в thread Tahoma Win Api 1 03.03.2016 08:52
Сбор сообщений службы сообщений Windows XP testor48 Работа с сетью в Delphi 3 31.03.2011 20:20
Перехват сообщений от Службы сообщений (Messenger) SJMS Win Api 6 17.07.2008 10:26