В этом руководстве показано ведение журнала в Java-приложении с использованием tinylog облегченной платформы ведения журнала.
Содержание
- 1. крошечная зависимость от журнала
- 2. крошечный журнал Привет, Мир
- 3. крошечные уровни ведения журнала
- 4. Журналы с аргументами
- 5. Журналы с аргументами
- 6. Журналы с аргументами
- 7. Отправка журналов в файл
- 8. Отправка журналов в консоль и файл
- 9. Прокатный файл
- 10. Теги
- 11. Запись потока и асинхронность лесоруб
- 12. Почему стоит выбрать tinylog?
- 13. В дальнейшем Чтение
- 14. Скачать Исходный Код
- 15. Рекомендации
P.S Протестировано с помощью tinylog 2.3.2.
1. крошечная зависимость от журнала
Для ведения крошечного журнала нам нужно добавить tiny log-api
и крошечный logimpl
в путь к классу проекта.
org.tinylog tinylog-api 2.3.2 org.tinylog tinylog-impl 2.3.2
2. крошечный журнал Привет, Мир
Крошечный журнал имеет статический регистратор; поэтому нам не нужно создавать экземпляр класса регистратора, как показано ниже:
// no need to declare Logger, tinylog provide static Logger // private static Logger logger = Logger.getLogger(HelloWorld.class.getName());
package com.mkyong; import org.tinylog.Logger; public class HelloWorld { // no need declare Logger like other logging frameworks public static void main(String[] args) { Logger.info("Hello World tinylog!"); Logger.trace("This is trace!"); Logger.debug("This is debug!"); Logger.info("This is info!"); Logger.warn("This is warn!"); Logger.error("This is error!"); } }
Выход
2021-06-09 14:39:01 [main] com.mkyong.HelloWorld.main() INFO: Hello World tinylog! 2021-06-09 14:39:01 [main] com.mkyong.HelloWorld.main() TRACE: This is trace! 2021-06-09 14:39:01 [main] com.mkyong.HelloWorld.main() DEBUG: This is debug! 2021-06-09 14:39:01 [main] com.mkyong.HelloWorld.main() INFO: This is info! 2021-06-09 14:39:01 [main] com.mkyong.HelloWorld.main() WARN: This is warn! 2021-06-09 14:39:01 [main] com.mkyong.HelloWorld.main() ERROR: This is error!
3. крошечные уровни ведения журнала
Крошечный журнал поддерживает пять уровней ведения журнала:
- след
- отлаживать
- информация
- предупреждать
- ошибка
В крошечном журнале уровень ведения журнала по умолчанию равен трассировка
.
4. Журналы с аргументами
В крошечном журнале мы можем использовать {}
заполнители для представления аргументов.
Logger.trace("arg1 {} and arg2 {}", a, b); Logger.debug("arg1 {} and arg2 {}", a, b); Logger.info("arg1 {} and arg2 {}", a, b); Logger.warn("arg1 {} and arg2 {}", a, b); Logger.error("arg1 {} and arg2 {}", a, b);
Ниже приведен полный пример tinylog для журналов с аргументами.
package com.mkyong; import org.tinylog.Logger; public class LogWithArguments { public static void main(String[] args) { String msg = "info"; int number = 9; Logger.info("This is {}, {}", msg, number); Logger.error("This is {}", "error"); } }
Выход
2021-06-09 15:08:36 [main] com.mkyong.LogWithArguments.main() INFO: This is info, 9 2021-06-09 15:08:36 [main] com.mkyong.LogWithArguments.main() ERROR: This is error
5. Выход
В tinylog по умолчанию используется поиск файла tiny log.properties
из пути к классу проекта; tiny log.properties
определяет значения конфигурации для tinylog.
Ниже приведен пример tiny log.properties
, он записывает сообщение в консоль в пользовательском формате и устанавливает уровень ведения журнала на info.
# logs to Console writer = console writer.format = {date: HH:mm:ss.SSS} {level}: {message} writer.level = info
Logger.info("Hello World tinylog!"); Logger.trace("This is trace!"); Logger.debug("This is debug!"); Logger.info("This is info!"); Logger.warn("This is warn!"); Logger.error("This is error!");
Выход
14:52:03.774 INFO: Hello World TinyLog! 14:52:03.777 INFO: This is info! 14:52:03.777 WARN: This is earn! 14:52:03.777 ERROR: This is error!
6. Выход
Мы можем передать файл tiny log.properties
приложению через системное свойство крошечный журнал.конфигурация
$ java -jar -Dtinylog.configuration=/path/tinylog.properties application.jar # the name of tinylog.properties is optional, it can be any name. $ java -jar -Dtinylog.configuration=/path/abcdefg.properties application.jar
7. Отправка журналов в файл
Приведенный ниже пример регистрирует исключение и отправляет его в файл.
# logs to a file writer = file writer.file = log.txt writer.level = info
package com.mkyong; import org.tinylog.Logger; public class LogWithException { public static void main(String[] args) { try { int answer = 1 / 0; System.out.println(answer); } catch (Exception ex) { Logger.error(ex); } } }
Все зарегистрированные сообщения отправляются в файл log.txt
.
2021-06-09 15:20:53 [main] com.mkyong.LogWithException.main() ERROR: java.lang.ArithmeticException: / by zero at com.mkyong.LogWithException.main(LogWithException.java:10)
8. Отправка журналов в консоль и файл
Для нескольких авторов мы должны предоставить уникальное имя для каждого автора. Имя автора может быть любым, начинающимся с писатель
.
Мы можем использовать писатель
, ,
писатель 2
,
# logs to Console writer = console writer.format = {date: HH:mm:ss.SSS} {level}: {message} writer.level = info # logs to a file writer2 = file writer2.file = log.txt writer2.level = info
Или более значимые имена, такие как writeconsole
, файл записи
, файл записи JDBC
и т.д.
# logs to Console writerConsole = console writerConsole.format = {date: HH:mm:ss.SSS} {level}: {message} writerConsole.level = info # logs to a file writerFile = file writerFile.file = log.txt writerFile.level = info
9. Прокатный файл
Примечание Прочтите официальный крошечный журнал rollingfilewriter для более подробного объяснения.
Параметр written.policies, ежедневно: 00:00, размер: 1 мб
указывает tinylog создавать новый файл журнала или поворачивать файл журнала ежедневно или в зависимости от размера файла, в зависимости от того, что произойдет раньше; остальные значения конфигурации не требуют пояснений.
# rolling file writer = rolling file writer.level = info writer.format = {date: HH:mm:ss.SSS} {level}: {message} # writer.file = {date:yyyy}/{date:MM}/log-{pid}.{count}.log writer.file = logs/{date:yyyy-MM-dd}-log.{count}.log writer.latest = logs/latest.log writer.charset = UTF-8 writer.buffered = true writer.policies = startup, daily: 00:00, size: 1mb writer.backups = 100 writer.convert = gzip
Крошечный пример журнала для проверки скользящего файла.
package com.mkyong; import org.tinylog.Logger; public class RollingFileExample { public static void main(String[] args) { // create hello x 3 per line String line = "Hello tinylog! "; line = line + line + line; System.out.println(line); int count = 0; while (count < 100_000) { Logger.info(line + count); count++; } System.out.println("Done"); } }
В приведенном выше примере записывается 100 тысяч строк, и он будет генерировать размер файла около 6 МБ+
. Для письменной политики размер: 1 мб
он создаст 7 файлов журнала и заархивирует его, а latest.log
содержит последние зарегистрированные сообщения.
P.S Оба Оба и и содержат одно и то же зарегистрированное сообщение.
крошечные авторы журналов Крошечный журнал содержит семь разных авторов:
- Приставка
- Файл
- JDBC (База данных)
- JSON
- Logcat (Андроид)
- Прокатный файл
- Общий файл
Подробнее читайте в этой документации – авторы tinylog .
10. Теги
В tiny log мы можем отправлять журналы разным авторам с помощью тегов – удобная функция.
package com.mkyong; import org.tinylog.Logger; public class TagExample { public static void main(String[] args) { Logger.info("normal"); // send to writer tagged `system` Logger.tag("system").error("this is system!"); // send to writer tagged `api` Logger.tag("api").info("This is normal api log!"); } }
# logs to Console writer = console writer.format = {date: HH:mm:ss.SSS} {level}: {message} writer.level = info # logs to a file, tag `api` writer2 = file writer2.tag = api writer2.file = logs/api.log writer2.format={date: yyyy-MM-dd HH:mm:ss.SSS} {level}: {message} writer2.level = info # logs to a file, tag `system` writer3 = file writer3.tag = system writer3.file = logs/system.log writer3.format={date: yyyy-MM-dd HH:mm:ss.SSS} {level}: {message}
Вывод, записывающее устройство консоль
не имеет тега; оно будет отображать все зарегистрированные сообщения.
17:15:55.236 INFO: normal 17:15:55.239 INFO: This is normal api log! 17:15:55.239 ERROR: this is system!
Журналы, помеченные api
, будут отправлены автору, помеченному api
.
2021-06-09 17:15:55.239 INFO: This is normal api log!
Журналы, помеченные system
, будут отправлены автору, помеченному system
.
2021-06-09 17:15:55.239 ERROR: this is system!
11. Запись потока и асинхронность лесоруб
Крошечный журнал поддерживает асинхронные регистраторы или неблокируемые регистраторы, использующие поток записи
, которые позволяют авторам работать в отдельном потоке.
# optional, default: false writingthread = true
Включите этот поток записи
в крошечный журнал.свойства
для повышения производительности ведения журнала.
12. Почему стоит выбрать tinylog?
Крошечный журнал работает быстро; прочитайте этот тест .
13. В дальнейшем Чтение
Документация tiny log очень подробная и организованная, обязательно проверьте ее для получения подробного объяснения.
14. Скачать Исходный Код
$клон git $клон git
$$cd крошечный журнал
15. Рекомендации
- Официальный сайт крошечного журнала
- Java – Чтение файла из папка ресурсов
- Учебник по API ведения журнала Java
- Учебник по Apache Log4j 2
- Учебник по обратному входу SLF4J
Оригинал: “https://mkyong.com/logging/tinylog-tutorial/”