如何使用DNN中的事件记录服务

简介: Event Log介绍 DNN提供了很多基础的服务(Service),Event记录系统就是其中的一个。如图: Event记录系统可以记录系统中发生的很多事情,如: 那如何使用这个Event系统呢? 在深入细节之前,让我们先想想,在生活中,如果你要记录一个事件,你会怎么办呢?...

Event Log介绍

DNN提供了很多基础的服务(Service),Event记录系统就是其中的一个。如图:

clip_image002

Event记录系统可以记录系统中发生的很多事情,如:

clip_image004

那如何使用这个Event系统呢?

clip_image007在深入细节之前,让我们先想想,在生活中,如果你要记录一个事件,你会怎么办呢?比如借别人钱了,你会用一个小纸片写上,“2008年5月27日,在商场借李四4000元钱,约定8月1日前还”

在系统中我们要记录一个事件,同样的,我们得指明这些东西:

  • 事件的日期——2008年5月27日
  • 事件的类型——借钱
  • 事件的相关人——李四(当然,我自己也是相关人)
  • 事件的备注——归还日期
  • 事件发生的地点——商场

我们指明了这些东西,存入数据库,及添加了一个Event记录。

那如何添加呢,DNN里一个基本概念就是CBO(Custom Business Object)的概念,向数据库里添加、修改、删除一个对象,都要通过对象的Info类和Controller类。Event肯定是一个对象,那个应该有一个EventInfo类。DNN的服务方面的代码都放在了Service命名空间下了,我们在这里找一找,果然,参照左图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 

clip_image009

在DNN的DotNetNuke.Services.Log.EventLog下,有一个LogInfo类。我们再来看看LogInfo类有什么属性,如下图:

  • 事件的日期——LogCreateDate、LogCreateDateNum
  • 事件的类型——LogTypeKey
  • 事件的相关人——LogUserName(LoguserID)
  • 事件的备注——LogProperties
  • 事件的地点——LogPortalID、LogPortalName、LogServerName

还有一些其它的属性,用来记录事件存储的文件等等。

这个时候我们可以想象如何添加一个Event记录了,生成一个LogInfo,使用LogController添加进数据库。

我们来看看DNN在用户登录时是如何把用户登录这个Event登录到系统里面的。

 

 

 

 

 

 

 

 

 

 

 

 

代码如下:


         Private   Shared   Sub AddEventLog() Sub AddEventLog(ByVal portalId As IntegerByVal username As StringByVal userId As IntegerByVal portalName As StringByVal Ip As StringByVal loginStatus As UserLoginStatus)

            
Dim objEventLog As New Services.Log.EventLog.EventLogController

            
' initialize log record
            Dim objEventLogInfo As New Services.Log.EventLog.LogInfo
            
Dim objSecurity As New PortalSecurity
            objEventLogInfo.AddProperty(
"IP", Ip)
            objEventLogInfo.LogPortalID 
= portalId
            objEventLogInfo.LogPortalName 
= portalName
            objEventLogInfo.LogUserName 
= objSecurity.InputFilter(username, PortalSecurity.FilterFlag.NoScripting Or PortalSecurity.FilterFlag.NoAngleBrackets Or PortalSecurity.FilterFlag.NoMarkup)
            objEventLogInfo.LogUserID 
= userId

            
' create log record
            objEventLogInfo.LogTypeKey = loginStatus.ToString
            objEventLog.AddLog(objEventLogInfo)

        
End Sub


第一步:生成一个EventLogController

Dim  objEventLog  As   New  Services.Log.EventLog.EventLogController

第二步:生成一个EventInfo,并填充相关属性


Dim  objEventLogInfo  As   New  Services.Log.EventLog.LogInfo

Dim  objSecurity  As   New  PortalSecurity

objEventLogInfo.AddProperty(
" IP " , Ip)

objEventLogInfo.LogPortalID 
=  portalId

objEventLogInfo.LogPortalName 
=  portalName

objEventLogInfo.LogUserName 
=  objSecurity.InputFilter(username, PortalSecurity.FilterFlag.NoScripting  Or  PortalSecurity.FilterFlag.NoAngleBrackets  Or  PortalSecurity.FilterFlag.NoMarkup)

objEventLogInfo.LogUserID 
=  userId

这里要注意的一点是,LogInfo的AddProperty()函数可以允许我们添加自定义的记录项。比如本例中的:

objEventLogInfo.AddProperty( " IP " , Ip)

最后:制定Event类型,使用EventLogController添加进数据库


objEventLogInfo.LogTypeKey  =  loginStatus.ToString

objEventLog.AddLog(objEventLogInfo)

LogTypeKey是一个String,所以可以接受DNN中各种Event的枚举作为类型描述,不同的类,比如登录、模块安装等等都提不同的枚举类型的事件类型,可以直接使用。

相关文章
|
1月前
|
机器学习/深度学习 Python
深入了解CatBoost:自定义目标函数与度量的高级教程
深入了解CatBoost:自定义目标函数与度量的高级教程【2月更文挑战第18天】
28 1
|
3月前
|
自然语言处理 算法
【论文精读】COLING 2022 - CLIO: 用于文档级事件抽取的角色交互多事件头注意力网络
【论文精读】COLING 2022 - CLIO: 用于文档级事件抽取的角色交互多事件头注意力网络
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
CasEE: 一种用于重叠事件抽取的级联解码联合学习框架 论文解读
事件抽取(Event extraction, EE)是一项重要的信息抽取任务,旨在抽取文本中的事件信息。现有方法大多假设事件出现在句子中没有重叠,这不适用于复杂的重叠事件抽取。
164 0
|
8月前
|
机器学习/深度学习 存储 算法
GIT:基于异构图的交互模型与跟踪器的文档级事件抽取 论文解读
文档级事件提取旨在从整篇文章中识别事件信息。由于这项任务的两个挑战,现有的方法并不有效:a)目标事件论点分散在句子中
86 0
|
9月前
|
PyTorch 算法框架/工具 异构计算
PyTorch高级教程:自定义模型、数据加载及设备间数据移动
在深入理解了PyTorch的核心组件之后,我们将进一步学习一些高级主题,包括如何自定义模型、加载自定义数据集,以及如何在设备(例如CPU和GPU)之间移动数据。
|
9月前
|
机器学习/深度学习 数据可视化 Java
TensorFlow 高级技巧:自定义模型保存、加载和分布式训练
本篇文章将涵盖 TensorFlow 的高级应用,包括如何自定义模型的保存和加载过程,以及如何进行分布式训练。
|
9月前
|
人工智能 自然语言处理 文字识别
理解指向,说出坐标,Shikra开启多模态大模型参考对话新维度
理解指向,说出坐标,Shikra开启多模态大模型参考对话新维度
133 0
|
PyTorch 算法框架/工具 Python
pytorch保存参数及模型的两种方式
pytorch保存参数及模型的两种方式
402 0
|
机器学习/深度学习 缓存 JSON
快速入门DVC(六):指标跟踪、更新训练参数以及可视化模型表现
在上一篇文章快速入门DVC(五):数据流水线中,讲述了如何完成一个机器学习模型训练流水线,以及如何重现机器学习模型。本文接下来将讲述 DVC 如何进行模型指标跟踪、修改训练参数重新训练以及使用图表可视化模型表现。
|
机器学习/深度学习 测试技术 BI
你的模型隐藏了什么? 一个评估 ML 模型的教程(Evidently)(上)
想象一下,你训练了一个机器学习模型。 也许,有几个候选模型可供选择。 您在测试集上运行它们并获得了一些质量估计。 模型没有过拟合。 特征是有意义的。 总体而言,鉴于手头的数据有限,它们的表现尽他们所能。 现在,是时候决定它们中的任何一个是否足以用于生产用途。 除了标准性能检查之外,如何评估和比较您的模型? 在本教程中,我们将通过一个示例详细介绍如何评估您的模型。