Я не являюсь сторонником изобретателей велосипедов. Всегда считал, что если кто-то сделал за тебя какую-то работу и поделился ей, то результатами этой работы можно смело пользоваться. Это экономит кучу времени и сил. К тому же, уверен ли ты, что твой велосипед будет работать лучше ранее изобретенных велосипедов?
PLOG - Почему я использую этот логгер?
Критерии выбора
- Простота подключения и использования
- Возможность писать в файл (или несколько файлов одновременно)
- Фильтрация по степени важности
- Кроссплатформенность
- Возможность добавления дополнительного функционала
PLOG отвечает этим требованиям и дает дополнительные плюшки.
Подключение к проекту и использование
Все максимально просто! Указать путь к склонированному проекту.
Подключить заголовочный файл, проинициализировать, указав степень максимальную важности логов, и делать вызов соответствующих функций для вывода логов.
После запуска будет создан файл, куда будут записаны логи.
Так же вывод логов по степени подробности можно легко параметризовать используя getopt
Обзор функционала
- Вывод в консоль и параллельная запись логов в файл. Для использования необходимо добавить ConsoleAppender.
- Вывод в консоль информации разными цветами. Для использования необходимо добавить ColorConsoleAppender. Полезно для ускорения визуальной локализации ошибок и для более читабельного вида.
Примерно так это будет выглядеть на Ubuntu.
- Шифрование логов. Здесь необходимо создать класс LogEncrypt со статическим методм header, который будет вызывать метод encrypt и передать этот класс в RollingFileAppender. Непосредственно в encrypt будет реализовано простое XOR шифрование.
При инициализации логгера необходимо передать наш “шифратор” LogEncrypt классу RollingFileAppender. Я дополнительно использую класс LoggerEncryptKey, который взял на себя обязательства получения ключа шифрования из файла.
Соответственно, при чтении файла encPlogger.log, видно, что он содержит зашифрованные данные. Дополнительно отмечу, что класс LogEncrypt должен быть реализован в заголовочном файле, иначе вы не найдете способ передать методу encrypt ключ шифрования. И вообще, пока разбирался со всем этим, мне пришла мысль, что шифрование данных можно реализовать другим способом, а именно в качестве некоторой утилиты, на вход которому будет направлен вывод, и эта утилита, в свою очередь, сохраняла бы зашифрованный лог в файл. Но это уже тема для другого поста.
Для извлечения данных необходимо воспользоваться утилитой для дешифровки логов.
И собственно код дешифратора логов
Вместо заключения
В будущем при более детальном изучении PLOG и выявлении новых интересных фич буду дополнять статью новой информацией.
Ссылки
- Утилита для дешифровки логов - https://github.com/a-khakimov/encrypted-log-reader.git
- Рассматриваемые примеры - https://github.com/a-khakimov/plog-using.git