二开案例.服务插件.获取调用堆栈

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.服务插件.获取调用堆栈

【应用场景】

某个功能不知道被谁调用了,可通过记录调用堆栈日志进行跟踪分析。


【案例演示】

付款申请单被删,查看删除操作的调用堆栈。


【实现步骤】

<1>编写服务插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Log;
using Kingdee.BOS.Util;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
namespace Jac.XkDemo.BOS.App.PlugIn
{
    /// <summary>
    /// 【服务插件】获取调用堆栈
    /// </summary>
    [Description("【服务插件】获取调用堆栈"), HotUpdate]
    public class CatchStackOperationServicePlugIn : AbstractOperationServicePlugIn
    {
        public override void EndOperationTransaction(EndOperationTransactionArgs e)
        {
            base.EndOperationTransaction(e);
            var ids = string.Join(",", e.DataEntitys.Select(o => string.Format("{0}({1})", o[0], o[this.BusinessInfo.GetBillNoField().PropertyName])));
            var logs = new List<string>();
            logs.Add(string.Format("单据:{0};操作:{1};单号:{2}", this.BusinessInfo.GetForm().Name, this.FormOperation.OperationName, ids));
            var stackFrames = new StackTrace().GetFrames();
            foreach (var stackFrame in stackFrames)
            {
                var method = stackFrame.GetMethod();
                var log = string.Format("【{0}】=>{1}->{2}->{3}", method.Name, stackFrame.GetMethod().Module, method.DeclaringType == null ? "" : method.DeclaringType.FullName, stackFrame.GetMethod());
                logs.Add(log);
            }
            var logData = string.Join("\r\n", logs);
            Logger.Error("DBG", logData, null);
        }
    }
}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展付款申请单,删除操作注册服务插件,保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,打开付款申请单列表,删除某个单据,即可从后台日志中获取到本次删除操作的调用堆栈。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.服务插件.获取调用堆栈

【应用场景】某个功能不知道被谁调用了,可通过记录调用堆栈日志进行跟踪分析。【案例演示】付款申请单被删,查看删除操作的调用堆栈。【实...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息