Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

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

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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


03:22.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru