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

OSCHINA-MIRROR/lmx_007-hanboAudit

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

HanboAudit

Java-написанный плагин для ведения операционных логов и точек перехвата, основанный на ORM-фреймворке. В настоящее время совместим с MyBatis и Hibernate.

Функции плагина

  • Запись информации об операторе, меню, модуле, функции и значений до и после операций на уровне строк базы данных. Широко используется для аудита журналов. Исходный код доступен здесь.

Использование плагина

  1. Добавьте зависимость Maven:
        <dependency>
                <groupId>com.lmx</groupId>
                <artifactId>hanbo-audit</artifactId>
                <version>1.0-SNAPSHOT</version>
        </dependency>
  1. Настройте Hibernate: В Spring MVC: hibernate.ejb.interceptor=com.lmx.commom.oplog.OpHibernateInterceptor

В Spring Boot: spring.jpa.properties.hibernate.ejb.interceptor=com.lmx.commom.oplog.OpHibernateInterceptor 3. Настройте MyBatis:

    <plugins>
        <plugin interceptor="com.lmx.commom.oplog.OpMybatisInterceptor"/>
    </plugins>
  1. Настройте Logback: настройте приложение для вывода операционных журналов в указанный файл (путь необходимо настроить самостоятельно):
    <appender name="asyncAppender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>1024</queueSize>
        <appender-ref ref="file"/>
    </appender>

    <appender name="es_log_appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/oplog-es.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/oplog-es.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>7</maxHistory>
            <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>500MB</MaxFileSize>
            </TimeBasedFileNamingAndTriggeringPolicy>
            <totalSizeCap>5000MB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="es_log_async_appender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>1024</queueSize>
        <appender-ref ref="es_log_appender"/>
    </appender>

    <logger name="es_log" level="INFO" additivity="false">
        <appender-ref ref="es_log_async_appender"/>
    </logger>

Пример кода

  1. Объявление аннотаций:

Сканирование компонентов com.lmx.common.oplog.OpLogAspect:

@Service
public class DemoServiceDelegate {
    @Autowired
    DemoService demoService;

    @OpLog(opId = "1", operationName = "测试一下", opName = "zhangsan")
    public void hibernate() {
        demoService.hibernate();
    }

    @OpLog(opId = "2", operationName = "测试一下", opName = "lisi")
    public void mybatis() {
        demoService.mybatis();
    }
}
  1. Объявление сервлета-перехватчика:

Укажите шаблон URL в конфигурации фильтра, чтобы активировать точки перехвата.

Spring Boot:

    @Bean
    public FilterRegistrationBean newOpLogFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        OpLogFilter opLogFilter = new OpLogFilter();
        opLogFilter.setNeedOpRecordUrlList(Lists.newArrayList("/demo/cj"));
        filterRegistrationBean.setFilter(opLogFilter);
        filterRegistrationBean.setUrlPatterns(Lists.newArrayList("/*"));
        return filterRegistrationBean;
    }

Spring MVC:

    <filter>
        <filter-name>OpLogFilter</filter-name>
        <filter-class>com.lmx.commom.oplog.OpLogFilter</filter-class>
        <init-param>
            <param-name>needOpRecordUrlList</param-name>
            <param-value>/demo/cj</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>OplogFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Вывод журнала

Структурированный вывод, который впоследствии можно импортировать в ES через filebeats. Можно интегрировать с Kibana или настроить отображение.

{"appId":0,"operationType":"Modify","originalValue":"张三-mybatis-74009d85-6703-4f60-b715-da9e1e98530e","modifyValue":"张三-mybatis-f05cc7e1-6a84-4154-accd-18c0fae34fc3"}
{"appId":0,"operationType":"Modify","originalValue":"503","modifyValue":"603.0"}
{"appId":0,"operationType":"Modify","originalValue":"李四-mybatis-cf95c752-d375-4865-a322-4fda4857da44","modifyValue":"李四-mybatis-58b819a0-be0e-4d99-b0d4-8a3455354d19"}
{"appId":0,"operationType":"Modify","originalValue":"522.0","modifyValue":"622.0"}

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/lmx_007-hanboAudit.git
git@api.gitlife.ru:oschina-mirror/lmx_007-hanboAudit.git
oschina-mirror
lmx_007-hanboAudit
lmx_007-hanboAudit
master