1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liuhao3169-easy-log

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 20:05 df736a3

введите описание изображения здесь

star fork

адрес Gitee: https://gitee.com/liuhao3169/easy-log

Этот проект больше не поддерживается, он был перемещён в: https://gitee.com/liuhao3169/relax/tree/master/relax-log

Что такое Easy Log?

Easy Log — это легковесная платформа для работы с логами, основанная на Spring Boot 2.6.7. В реальной бизнес-разработке логи являются неотъемлемой частью, и внедрение Easy Log обеспечивает вашей системе запросные логи, ошибочные логи и позволяет программным способом реализовать логи действий.

Easy Log предоставляет следующие три типа логов:

  • Запросные логи
    • Удобство отладки запросов в среде разработки
    • Реализован через аннотации, позволяющие выборочно сохранять логи запросов
  • Ошибочные логи
    • Сохранение информации об ошибках системы в среде продакшена для удобства диагностики
  • Логи действий
    • Возможность создания логов действий без изменения бизнес-кода
    • Вызов API в нужных местах кода для записи логов действий

Быстрый старт

Добавление координат pom

  • Координаты pom
<groupId>com.idea</groupId>
<artifactId>easy-log</artifactId>
<version>{easy-log.version}</version>
```## Инициализация базы данных

таблица easy_log_api

```sql
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Структура таблицы для easy_log_api
-- ----------------------------
DROP TABLE IF EXISTS `easy_log_api`;
CREATE TABLE `easy_log_api` (
  `id` bigint(20) NOT NULL COMMENT 'Основной ключ',
  `app_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название сервиса',
  `server_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Имя сервера',
  `app_port` int(11) DEFAULT NULL COMMENT 'Порт приложения',
  `server_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP адрес сервера',
  `env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Среда',
  `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Метод запроса',
  `request_uri` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'URI запроса',
  `user_agent` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Агент пользователя',
  `visitor_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP адрес посетителя',
  `method_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Класс метода',
  `method_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название метода',
  `params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Данные операции',
  `time` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Время выполнения',
  `create_user` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Создатель',
  `create_time` datetime(0) DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Заголовок журнала',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;

таблица easy_log_error

```sql
Установите ИМЯ=utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
```-- ----------------------------
 -- Структура таблицы easy_log_error
 -- ----------------------------
 DROP TABLE IF EXISTS `easy_log_error`;
 CREATE TABLE `easy_log_error` (
     `id` bigint(20) NOT NULL COMMENT 'Основной ключ',
     `app_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название приложения',
     `server_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Имя сервера',
     `app_port` int(11) DEFAULT NULL COMMENT 'Порт приложения',
     `server_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP адрес сервера',
     `env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Среда',
     `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Метод запроса',
     `request_uri` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'URI запроса',
     `user_agent` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'User agent',
     `visitor_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP адрес пользователя',
     `method_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Класс метода',
     `method_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название метода',
     `params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Данные запроса',
     `create_user` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Создатель записи',
     `create_time` datetime(0) DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания',
     `stack_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Стэк ошибки',
     `error_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название ошибки',
     `error_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Сообщение об ошибке',
     `error_line_number` int(11) DEFAULT NULL COMMENT 'Номер строки ошибки', 
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;```markdown
    `error_file_name` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название файла с ошибкой на Java',
     PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

таблица easy_log_custom

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
```-- ----------------------------
-- Structure of table easy_log_custom
-- ----------------------------
DROP TABLE IF EXISTS `easy_log_custom`;
CREATE TABLE `easy_log_custom` (
   `id` bigint(20) NOT NULL COMMENT 'Основной ключ',
   `app_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название приложения',
   `server_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Имя сервера',
   `app_port` int(11) DEFAULT NULL COMMENT 'Порт приложения',
   `server_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP адрес сервера',
   `env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Среда выполнения',
   `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Метод HTTP-запроса',
   `request_uri` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'URI HTTP-запроса',
   `visitor_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP адрес посетителя',
   `method_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Класс метода',
   `method_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Название метода',
   `user_agent` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'User-Agent',
   `params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Параметры операции',
   `create_user` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Пользователь, создавший запись',
   `create_time` datetime(0) DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата и время создания записи',
   `log_level` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Уровень лога',
   `log_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'ID лога',
   `log_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Данные лога',
   PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

```sql
SET FOREIGN_KEY_CHECKS = 1;

Конфигурация easy-log в файле application.yml* Включите easy log, по умолчанию отключен.

easy-log:
  enabled: true

Реализация интерфейсов для хранения логов в проекте

Существует два типа интерфейсов для хранения логов в Easy Log:

Поддержка интерфейса MyBatis Plus (начиная с версии v1.2.0.MP)

  • Если вам требуется простое хранение данных логов и вы используете MyBatis Plus, рекомендуется использовать этот способ.
  • Общий интерфейс
    • Если вам требуется что-то более сложное, чем простое хранение данных, или если вам нужны расширения, можно использовать этот способ.

Поддержка интерфейса MyBatis Plus

Если вам требуется простое хранение данных логов и вы используете MyBatis Plus, то рекомендуется использовать этот интерфейс для реализации логики хранения информации о логах.

Необходимо реализовать следующие интерфейсы:

com.idea.easy.log.service.mp.IApiLogService // Интерфейс для хранения логов запросов API
com.idea.easy.log.service.mp.ICustomLogService // Интерфейс для хранения пользовательских логов (логи действий)
com.idea.easy.log.service.mp.IErrorLogService // Интерфейс для хранения ошибочных логов

Пример кода:

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.idea.easy.log.model.ApiLog;
import com.idea.easy.log.service.mp.IApiLogService;
import org.springframework.stereotype.Service;

/**
 * @className: ApiLogService
 * @description:
 * @author: salad
 * @date: 2022/7/2
 */
@Service
public class ApiLogService extends ServiceImpl<ApiLogMapper, ApiLog> implements IApiLogService {
```    @Override
    public void saveApiLog(ApiLog apiLog) {
        apiLog.setCreateUser("salad");
        // Call the save method provided by MyBatis Plus to write data to the database
        save(apiLog);
    }

}

General Interface

v1.2.0.MP version and above support this interface. If you need something more complex than simple data storage or require extensions, you can use this approach.

For this approach, you must implement the following interfaces:

com.idea.easy.log.service.IEasyLogService

Example code:

@Service
public class LogServiceImpl implements IEasyLogService {
    @Override
    public void saveApiLog(ApiLogModel apiLogModel) {
        // Save API request log
        System.out.println("saveApiLog---->Writing to the database" + apiLogModel);
    }

    @Override
    public void saveErrorLog(ErrorLogModel errorLogModel) {
        // Save error log
        System.out.println("saveErrorLog---->Writing to the database" + errorLogModel);
    }

    @Override
    public void saveCustomLog(CustomLogModel customLogModel) {
        // Save custom operation log
        System.out.println("saveCustomLog---->Writing to the database" + customLogModel);
    }
}

API Request Logs

There are two types of API request logs:

  1. Console API request logs
  2. Persistent API request logs

Console API Request Logs

Description

Console API request logs are logs of API requests that are displayed in the console. These logs are not stored in a database; they are simply shown in the console for convenience during API debugging in the development environment.Выбор режима

Easy Log предлагает несколько режимов для таких логов, что позволяет пользователям выбирать режимы для контроля объема информации, выводимой в консоли.

  • Всего существует четыре режима:
    • Режим ALL: полный режим, выводящий в консоли адрес запроса API, метод запроса, заголовки запроса, параметры запроса и результат ответа;
    • Режим BASIC: базовый режим, выводящий в консоли адрес запроса API, метод запроса, параметры запроса и результат ответа;
    • Режим SIMPLE: простой режим, выводящий в консоли адрес запроса, метод запроса и результат ответа;
    • Режим CLOSE: закрытый режим, который выключает эту функцию. Мы можем настроить эти режимы в файле application.yml, как показано ниже:
easy-log:
  enabled: true
  console-log-mode: simple #Режим журнала в консоли: простой режим

Устойчивый журнал запросов к API

Описание

Если вам требуется записывать информацию о запросах API в базу данных, Easy Log предоставляет аннотацию (которую можно применять к методам), чтобы пользователи могли выборочно сохранять логи запросов API. Аннотация представлена следующим образом:```java @ApiLog(value)

>Аннотация принимает значение `value`, которое обычно используется для описания функциональности API, но это не является обязательной практикой, и пользователи могут самостоятельно установить свои правила.
* Пример
```java
@PostMapping("/user")
@ApiLog("Добавление нового пользователя")
public R save(@RequestBody User user) {
    //...
    //...
    return R.success("Сохранение выполнено успешно!");
}
```## Журнал ошибок

Обычно журнал ошибок не создаётся вручную, а автоматически регистрируется при помощи механизма перехвата исключений. Поэтому Easy Log предоставляет встроенное глобальное обработчик исключений RestExceptionTranslator, который используется для обработки некоторых исключений системы. Подробнее смотрите исходный код этого класса, расположенного по следующему пути:

```java
com.idea.easy.log.translator.RestExceptionTranslator;

Журнал действий

Для наших бизнес-систем часто требуется использование журнала действий. Как добавить журнал действий с помощью Easy Log?

Easy Log предлагает две возможности для добавления журналов действий:

  • Программная модель логирования действий
  • Минимальное вторжение в бизнес-код, основанное на конфигурационных файлах логирования действий

Программная модель логирования действий

Если вы хотите внедрить логирование действий в систему, можно использовать следующие API:

// Лог уровня info
EasyLogger.info("идентификатор_лога", "сообщение_лога");
// Лог уровня debug
EasyLogger.debug("идентификатор_лога", "сообщение_лога");
// Лог уровня warn
EasyLogger.warn("идентификатор_лога", "сообщение_лога");
// Лог уровня error
EasyLogger.error("идентификатор_лога", "сообщение_лога");

Идентификатор лога: этот параметр не имеет жёстко заданной формы, обычно рекомендуется использовать имя модуля: название операции, но правила могут быть определены пользователем самостоятельно.* Пример

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private EasyLogger logger; // Внедряем объект EasyLogger
    
    @PostMapping("/save")
    @ApiLog("Добавление пользователя")
    public R save(@RequestBody User user) {
        // Сохраняем лог уровня info
        logger.info("Модуль_пользователя: Добавление_пользователя", "тестовый_интерфейс...........");
        return R.success("Сохранено успешно!");
    }
}

Нулевое вторжение в бизнес-код логирования действий

Иногда мы не хотим использовать программную модель для добавления логирования действий, так как это может привести к сильной связанности проекта. Кроме того, если нам потребуется внедрить логирование действий позже, придётся менять бизнес-код, что увеличит объём работы. Базируясь на конфигурационных файлах, Easy Log позволяет реализовать нулевое вторжение в бизнес-код при логировании действий.

Эта функциональность будет доступна в версии V1.3.0...

Полное описание всех конфигураций

Вот полный список всех конфигураций Easy Log```yaml easy-log: enabled: true # Activate Easy Log, the default value is false; if disabled, all other configurations will be ignored error-processor: true # Enable global error processor that handles storing error logs, the default value is true console-log-mode: # Manage the mode of log output in the console, the default value is ALL (full mode) default-app-name: easy-log # Default application name in the log table, used when spring.application.name is not set, the default value is easy-log default-env: dev # Default environment for the application in the log table, used when spring.profiles.active is not set, the default value is dev banner: true # Display the Easy Log logo in the console, the default value is true


Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/liuhao3169-easy-log.git
git@api.gitlife.ru:oschina-mirror/liuhao3169-easy-log.git
oschina-mirror
liuhao3169-easy-log
liuhao3169-easy-log
master