адрес Gitee: https://gitee.com/liuhao3169/easy-log
Этот проект больше не поддерживается, он был перемещён в: https://gitee.com/liuhao3169/relax/tree/master/relax-log
Easy Log — это легковесная платформа для работы с логами, основанная на Spring Boot 2.6.7. В реальной бизнес-разработке логи являются неотъемлемой частью, и внедрение Easy Log обеспечивает вашей системе запросные логи, ошибочные логи и позволяет программным способом реализовать логи действий.
Easy Log предоставляет следующие три типа логов:
<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:
enabled: true
Существует два типа интерфейсов для хранения логов в Easy Log:
Поддержка интерфейса MyBatis Plus (начиная с версии v1.2.0.MP)
Если вам требуется простое хранение данных логов и вы используете 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);
}
}
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);
}
}
There are two types of 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 предлагает несколько режимов для таких логов, что позволяет пользователям выбирать режимы для контроля объема информации, выводимой в консоли.
easy-log:
enabled: true
console-log-mode: simple #Режим журнала в консоли: простой режим
Описание
Если вам требуется записывать информацию о запросах 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 )