func DecodeLog(execer []byte, rlog *ReceiptData) (*ReceiptDataResult, error) {
	var rTy string
	switch rlog.Ty {
	case 0:
		rTy = "ExecErr"
	case 1:
		rTy = "ExecPack"
	case 2:
		rTy = "ExecOk"
	default:
		rTy = "Unknown"
	}
	rd := &ReceiptDataResult{Ty: rlog.Ty, TyName: rTy}
	for _, l := range rlog.Logs {
		var lTy string
		var logIns json.RawMessage
		lLog, err := common.FromHex(l.Log)
		if err != nil {
			return nil, err
		}
		logType := types.LoadLog(execer, int64(l.Ty))
		if logType == nil {
			lTy = "unkownType"
			logIns = nil
		} else {
			logIns, _ = logType.JSON(lLog)
			lTy = logType.Name()
		}
		rd.Logs = append(rd.Logs, &ReceiptLogResult{Ty: l.Ty, TyName: lTy, Log: logIns, RawLog: l.Log})
	}
	return rd, nil
}
DecodeLog decode log
package types
import (
	"bytes"
	"encoding/json"
	"strings"
	"github.com/33cn/chain33/common"
	"github.com/33cn/chain33/types"
	_ "github.com/33cn/chain33/system/dapp/coins/types"  
)