首页 > 代码库 > Koala业务日志系统手动集成

Koala业务日志系统手动集成

4 手动集成

1. 添加依赖

application层添加业务日志接口模块依赖

<dependency>

    <groupId>org.openkoala.businesslog</groupId>

    <artifactId>koala-businesslog-api</artifactId>

    <version>4.0.0</version>

</dependency>

 

web层添加业务日志实现模块依赖

<dependency>

    <groupId>org.openkoala.businesslog</groupId>

    <artifactId>koala-businesslog-impl</artifactId>

    <version>4.0.0</version>

</dependency>

 

2. 创建LogFilter

例如com.xiaokaceng.demo.web.controller.businesslog.LogFilter.java

package com.xiaokaceng.demo.web.controller.businesslog;

import org.openkoala.businesslog.utils.BusinessLogServletFilter;
import javax.servlet.*;

public class LogFilter extends BusinessLogServletFilter {

    /**
     * 将需要用到的信息放入日志上下文
     * @param req
     * @param resp
     * @param chain
     */
    @Override
    public void beforeFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
        addIpContext(getIp(req));
        // TODO 需要自己实现获取用户名
        addUserContext("xxx");
    }

    public void init(FilterConfig filterConfig) throws ServletException {
        //To change body of implemented methods use File | Settings | File Templates.
    }
 
    public void destroy() {
        //To change body of implemented methods use File | Settings | File Templates.
    }

}

注意:当前用户需根据系统实现来获取

 

3. 创建DefaultBusinessLogController

package com.xiaokaceng.demo.web.controller.businesslog; import java.util.HashMap;
import java.util.Map;
import org.dayatang.domain.InstanceFactory;
import org.dayatang.utils.Page;
import org.openkoala.businesslog.application.BusinessLogApplication;
import org.openkoala.businesslog.model.DefaultBusinessLogDTO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

 
@Controller
@RequestMapping("/log")
public class DefaultBusinessLogController {

private BusinessLogApplication businessLogApplication;

 
@ResponseBody
@RequestMapping("/list")
public Page pageJson(DefaultBusinessLogDTO defaultBusinessLogDTO,

@RequestParam int page, @RequestParam int pagesize) {

Page<DefaultBusinessLogDTO> all = getBusinessLogApplication()

.pageQueryDefaultBusinessLog(defaultBusinessLogDTO, page,

pagesize);

return all;

}

 

@ResponseBody

@RequestMapping("/delete")

public Map<String, Object> delete(@RequestParam String ids) {

Map<String, Object> result = new HashMap<String, Object>();

String[] value = http://www.mamicode.com/ids.split(",");

Long[] idArrs = new Long[value.length];

for (int i = 0; i < value.length; i++) {

idArrs[i] = Long.parseLong(value[i]);

}

getBusinessLogApplication().removeDefaultBusinessLogs(idArrs);

result.put("result", "success");

return result;

}

 

@ResponseBody

@RequestMapping("/get/{id}")

public Map<String, Object> get(@PathVariable Long id) {

Map<String, Object> result = new HashMap<String, Object>();

result.put("data", getBusinessLogApplication()

.getDefaultBusinessLog(id));

return result;

}

 

public BusinessLogApplication getBusinessLogApplication() {

if (null == businessLogApplication) {

businessLogApplication = InstanceFactory

.getInstance(BusinessLogApplication.class);

}

return businessLogApplication;

}

}

 

4. 配置web.xml

<filter>
   <filter-name>LogFilter</filter-name>
   <filter-class>com.xiaokaceng.demo.web.controller.businesslog.LogFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>


5. 类路径下创建koala-businesslog.properties

pointcut=execution(* org.openkoala.example.application.impl.*.*(..))

#日志开关

kaola.businesslog.enable=true

#日志导出器

businessLogExporter=org.openkoala.businesslog.utils.BusinessLogExporterImpl

#数据库设置

log.db.jdbc.driver=${db.jdbcDriver}

log.db.jdbc.connection.url=${db.connectionURL}

log.db.jdbc.username=${db.username}

log.db.jdbc.password=${db.password}

log.db.jdbc.dialect=${hibernate.dialect}

log.hibernate.hbm2ddl.auto=${hibernate.hbm2ddl.auto}

log.hibernate.show_sql=${hibernate.show_sql}

log.db.Type=${db.Type}

db.generateDdl=${generateDdl}

log.maximumConnectionCount=3000

log.minimumConnectionCount=100

#线程池配置

#核心线程数

log.threadPool.corePoolSize=100

#最大线程数

log.threadPool.maxPoolSize=3000

#队列最大长度

log.threadPool.queueCapacity=2000

#线程池维护线程所允许的空闲时间

log.threadPool.keepAliveSeconds=300

#线程池对拒绝任务(无线程可用)的处理策略

log.threadPool.rejectedExecutionHandler=java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy

  

6. 添加扫描包路径

persistence-context.xml的packagesToScan节点添加:

<value>org.openkoala.businesslog.model</value>

 

7. 引入Spring配置

db-context.xml添加配置:

<import resource="classpath*:koala-businesslog-shared-persistence.xml"></import>

root.xml添加配置:

<import resource="classpath*:koala-businesslog-aop.xml"></import>

 

8. 剩余集成请参考使用教程

 

说明:

  •     以后插件会提供一键集成功能,无需手动集成
  •     第三方项目集成较为复杂,有较多技术约束

 

Koala业务日志系统手动集成