Koala业务日志系统使用教程

原创
2014/10/16 21:10
阅读数 1.4K

2 使用教程

前提

成功创建Koala Project,并且勾选集成业务日志子系统。

步骤

1. 业务方法标注@MethodAlias

格式:

@MethodAlias("业务方法别名")

业务方法

 

示例:

@MethodAlias("savePersonInfo")

public PersonInfo savePersonInfo(PersonInfo personInfo) {

         personInfo.save();

         return personInfo;

}

 要求:

  1.      别名必须符合Java方法名的命名规则
  2.      加名别必须有值,目的是为了方便业务方法与日志模板之间的映射
  3.      注解只能标在接口实现类上

2. 创建groovy日志模板

web模块src/main/resourcesbusinessLogConfig目录下创建任意以*.groovy结尾的文件,

例:xxx.groovy

模板:

package org.openkoala.businesslog.config(非必要)

import org.dayatang.domain.InstanceFacroty(非必要)

class OrganizationApplicationImpl { (类名必须符合Java命名)

      //必须

    def context

 

    def OrganizationApplicationImpl_createAsTopOrganization() {

        "${getPreTemplate()}:创建顶层机构:${context._param0.name}"

    }

    def OrganizationApplicationImpl_createCompany() {

        "${getPreTemplate()}:${context._param0.name},创建分公司:${context._param1.name}"

    }

    def OrganizationApplicationImpl_assignChildOrganization() {

        "${getPreTemplate()}:${context._param0.name},分配子机构:${context._param1.name},期限为${context._param2}"

    }

    def OrganizationApplicationImpl_createDepartment() {

        "${getPreTemplate()}:${context._param0.name}下创建部门:${context._param1.name}"

    }

    def OrganizationApplicationImpl_terminateEmployeeOrganizationRelation() {

        "${getPreTemplate()}:终止机构${context._param0.name}"

    }

    def getPreTemplate(){

        "${context._user}-"

    }

}

 说明:

日志模板实际上是一个groovy类,你可以定义任何方法,只有某个业务方法的别名(@MethodAlias的值)等于方法名,我们才认为它是一个业务日志方法,它的返回值(return或者放在方法最后一行的变量)将会被赋值给org.openkoala.businesslog.BusinessLog对象进行持久化。

日志方法返回值有两种情况:

1. 只返回一个String类型的日志文本;

2. 返回一个Map,这个Map包括keycategory的日志分类及日志文本。

在类中,def context定义一个变量,这个变量实际上是一个Map

Map中存储的是业务方法的返回值、参数。如果需要,你可以存储任何你需要的数据。你可以从这个context中取出你需要的内容,填充到你的日志中。默认情况下,我们会放一些默认的keycontext中,请看下表。

context参数说明

key

value

_methodReturn

业务方法返回值

_param

业务方法的参数, _param0代表第一个参数 _param1代表第二个参数,依此类推

_executeError 

业务方法执行失败的异常信息

_businessMethod 

业务方法

_user

业务方法操作人

_time

业务方法操作时间

_ip

ip地址

 

 示例1

class PersonInfoApplicationImpl {

    def context

    def savePersonInfo() {
	"创建个人信息"
    }

    def pageQueryPersonInfo() {
    	"查询个人信息列表"
    }
    
}



示例2

package org.openkoala.businesslog.config

class PersonInfoApplicationImpl {

    def context
	
    def savePersonInfo() {
	"${getPreTemplate()}:创建个人信息,名字为:${context._param0.name}"
    }

    def pageQueryPersonInfo() {
    	[category:"查询类", log:"查询个人信息列表"]
    }
    
    def getPreTemplate(){
        "${context._user}-"
    }
    
}



示例3

package org.openkoala

import org.dayatang.domain.InstanceFactory
import org.openkoala.example.application.PersonInfoApplication
import org.openkoala.example.domain.PersonInfo

class PersonInfoApplicationImpl {

    def context
	
    def savePersonInfo() {
	"${getPreTemplate()}:创建个人信息,名字为:${context._param0.name}"
    }

    def pageQueryPersonInfo() {
    	[category:"查询类", log:"查询个人信息列表"]
    }
    
    def removePersonInfo() {
    	PersonInfoApplication personInfoApplication
 = InstanceFactory.getInstance(PersonInfoApplication.class)
    	String name = personInfoApplication.getPersonInfo(577).getName()
    	"删除用户信息:名称为:" + name
    }
    
    def getPreTemplate(){
        "${context._user}-"
    }
    
}

以上示例代码仅供参考


3. 配置Spring切入点

默认不需要配置,项目创建好会把接口实现类的包路径配置成切入点,可自行修改扩展。
切入点配置在web模块src/main/resources下koala-businesslog.properties里,key为pointcut

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

|| execution(* org.openkoala.example.facade.impl.*.*(..))

 

Web查询页面

运行项目,访问地址:http://localhost:8080/pages/log/index.jsp

 

 

展开阅读全文
加载中

作者的其它热门文章

打赏
1
5 收藏
分享
打赏
3 评论
5 收藏
1
分享
返回顶部
顶部