Рубрики
Без рубрики

учебник по крошечному журналу

крошечные поездки и приемы ведения журнала, примеры, различные средства записи, такие как консоль, файл, скользящий файл и асинхронные регистраторы (поток записи) и т. Д.

В этом руководстве показано ведение журнала в 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. Рекомендации

Оригинал: “https://mkyong.com/logging/tinylog-tutorial/”