Skip to content

archsaurus/event-journal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сборка и запуск

1. Клонировать репозиторий

$ git clone <url> my_logger_project
$ cd my_logger_project

2. Сборка по Makefile

$ make

3. Запуск

$ ./build/bin/log_demo ./build/log.txt info

в терминале будет приглашение >, вводите сообщения и в файле build/log.txt появятся строки вида:

    2026-02-21 12:31:43 [Info] Стафеевна, выходи гулять на лавочке
    2026-02-21 12:31:46 [Error] Нет, я её сейчас убивать пойду...

Программа поддерживает работу CLI-аргументами:

$ ./build/bin/log_demo --usage
Usage: log_demo [-v?] [-l LEVEL] [-o FILE] [--level=LEVEL] [--output=FILE]
            [--verbose] [--help] [--usage]
$ ./build/bin/log_demo --help
Usage: log_demo [OPTION...]
Simple Logger – утилита для записи журналов.

  -l, --level=LEVEL          Уровень логов (debug|info|error). По
                             умолчанию – info
  -o, --output=FILE          Файл журнала (по умолчанию
                             – stdout)
  -v, --verbose              Подробный вывод (verbose)
  -?, --help                 Give this help list
      --usage                Give a short usage message

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Если опция output не указана, вывод будет направлен в stdout.

Архитектура проекта

Связи компонентов (MDD-курильщика)

Нет, это не продукт LLM, это вывод PlantUML.

┌─────────────────────────────────┐             ┌─────────────────────────────┐
│     Динамическая библиотека     │◀───────────│      Приложение‑тестер      │
│           (logger.so)           │      API    │            (main)           │
│  ┌───────────────────────────┐  │             └─────────────────────────────┘
│  │  Функции логгера (API)    │  │
│  └───────────────────────────┘  │
└─────────────────────────────────┘
               │
               │ запись лога
               │
               ▼
    ┌─────────────────────┐
    │     Файл журнала    │
    │      (log.txt)      │
    └─────────────────────┘

Описание сущностей

Библиотека — сам журнал

Она умеет:

  1. Инициализироваться с именем файла и уровнем по умолчанию;
  2. Менять уровень логирования в любой момент;
  3. Принимать сообщения (текст + уровень) и сохранять их в файл потокобезопасно;
  4. Корректно закрывать файл и освобождать ресурсы.

Приложение — клиент библиотеки

Оно:

  1. Парсит параметры командной строки (имя файла, уровень по умолчанию);
  2. В бесконечном цикле принимает строки от пользователя и при необходимости уровень;
  3. Упаковывает данные в сообщение и передает его в поток‑рабочий библиотеки;
  4. Остается свободным для следующего ввода.

Структура прокета

Жаль, что приходится это в очередной раз обговаривать, но и тут нет выводов LLM. Это - вывод утилиты tree.

/
├── .gitignore
├── README.md
├── Makefile                  # сборка библиотеки и приложения
├── include/                  # заголовки (API)
│   └── logger/               # namespace‑по‑папке
│       ├── logger.hpp        # API (класс Logger, enum Level)
│       ├── logger_impl.hpp   # Идиома pimpl затясалась
│       └── logger_export.hpp # макрос экспорта/импорта символов
├── src/                      # исходники библиотеки
│   ├── logger.cpp            # реализация класса Logger
│   └── logger_impl.hpp
├── app/                      # исходники тестового приложения
│   ├── cli.cpp               #
│   ├── cli.hpp               # Интерфейс командной строки (argp)
│   ├── console.cpp           #
│   ├── console.hpp           # Интерфейс командной строки (пользователь)
│   ├── level.hpp             #
│   ├── producer.cpp          #
│   ├── producer.hpp          # Менеджер сообщений
│   └── main.cpp              # точка входа, UI‑цикл, поток‑передатчик
├── tests/                    # тесты
│   └── logger_test.cpp
└── build/ (выхлоп make)      # артефакты сборки
    ├── lib/                  # liblogger.so, объектные файлы
    └── bin/                  # исполняемые файлы

About

Event Journal – реализация журнала событий (лог‑системы) на чистом C++17.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors