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

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

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

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

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

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

·        事件的日期——2008年5月27日

·        事件的类型——借钱

·        事件的相关人——李四(当然,我自己也是相关人)

·        事件的备注——归还日期

·        事件发生的地点——商场

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

那如何添加呢,DNN里一个基本概念就是CBO(Custom BusinessObject)的概念,向数据库里添加、修改、删除一个对象,都要通过对象的Info类和Controller类。Event肯定是一个对象,那个应该有一个EventInfo类。

 

果然在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 Integer, ByVal username As String, ByVal userId As Integer, ByVal portalName As String, ByVal Ip As String, ByVal 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第一步:生成一个EventLogController第一步:生成一个EventLogController

Dim objEventLog As New Services.Log.EventLog.EventLogController


第二步:生成一个EventInfo,并填充相关属性第二步:生成一个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的枚举作为类型描述,不同的类,比如登录、模块安装等等都提不同的枚举类型的事件类型,可以直接使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值