二开案例.表单插件.写文件日志(log4net)

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

二开案例.表单插件.写文件日志(log4net)

【应用场景】写文件日志(log4net)

【案例演示】采购订单,主菜单新增菜单项,点击该菜单后将文件日志写入指定文件夹。

【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Log;

using Kingdee.BOS.Util;

using log4net;

using System;

using System.Collections.Concurrent;

using System.ComponentModel;


[assembly: log4net.Config.XmlConfigurator(Watch = true)]


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【表单插件】写文件日志

    /// </summary>

    [Description("【表单插件】写文件日志"), HotUpdate]

    public class WriteFileLogFormPlugIn : AbstractDynamicFormPlugIn

    {

        /// <summary>

        /// 主菜单点击事件

        /// </summary>

        /// <param name="e"></param>

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if (e.BarItemKey.EqualsIgnoreCase("tbWriteFileLog"))

            {

                var log = LogHelper.GetLogger("EventLogger");

                log.Info("我是一条测试日志数据:)");

                log.Error("我是一条测试日志数据:)", new KDException("?", "操作异常......"));

                var logFilePath = AppDomain.CurrentDomain.BaseDirectory + "App_Data\\EventLog\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\Cloud.log";

                this.View.ShowMessage(string.Format("文件日志已保存至应用服务器的以下路径:{0}", logFilePath));

                return;

            }

        }

    }


    #region 日志管理器


    public static class LogHelper

    {

        private static readonly ConcurrentDictionary<string, log4net.ILog> loggers = new ConcurrentDictionary<string, log4net.ILog>();


        /// <summary>

        /// 获取日志管理器

        /// </summary>

        /// <param name="name"></param>

        /// <returns></returns>

        public static log4net.ILog GetLogger(string name)

        {

            if (loggers.ContainsKey(name))

            {

                return loggers[name];

            }


            lock (typeof(Logger))

            {

                if (!loggers.ContainsKey(name))

                {

                    loggers[name] = LogManager.GetLogger(name);

                }

            }


            return loggers[name];

        }

    }


    #endregion

}



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


<3>前往应用服务器,修改Web.config文件的log4net配置节,新增配置信息如下。

配置内容如下:

    <logger name="EventLogger">

      <level value="ALL" />

      <appender-ref ref="EventLoggerAppender" />

    </logger>

    <appender name="EventLoggerAppender" type="log4net.Appender.RollingFileAppender">

      <file value="App_Data\EventLog\" />

      <appendToFile value="true"/>

      <maxSizeRollBackups value="10"/>

      <maximumFileSize value="1MB"/>

      <rollingStyle value="Date"/>

      <datePattern value="yyyy-MM-dd/'Cloud.log'"/>

      <staticLogFileName value="false"/>

      <param name="RollingStyle" value="Composite"/>

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%date [%thread] %-5level - %message%newline"/>

      </layout>

    </appender>



<4>BOSIDE扩展采购订单,主菜单新增菜单项,如下图所示,注册表单插件,保存元数据。



现在可以登录业务站点,打开采购订单,检验一下插件的运行效果啦。




【参考资料】

请百度关键字【log4net】















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

二开案例.表单插件.写文件日志(log4net)

【应用场景】写文件日志(log4net)【案例演示】采购订单,主菜单新增菜单项,点击该菜单后将文件日志写入指定文件夹。【实现步骤】<1>编写表...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息