二开案例.表单插件.写文件日志(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)
本文2024-09-23 04:20:42发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164702.html