Introduction
In this article we are going to discuss about implementing the Audit Trail in 3 tier asp.net application. Also this can used for single tier application also.
3-Tier architecture
3-Tier architecture generally contains UI or Presentation Layer, Business Access Layer (BAL) or Business Logic Layer and Data Access Layer (DAL).
Presentation Layer (UI)
Presentation layer contains pages like .aspx or windows form where data is presented to the user or input is taken from the user.
Business Access Layer (BAL) or Business Logic Layer
BAL contains business logic, validations or calculations related with the data, if needed. I will call it Business Access Layer in my demo.
Data Access Layer (DAL)
DAL contains methods that helps business layer to connect the data and perform required action, might be returning data or manipulating data (insert, update, delete etc). For this demo application, I have taken a very simple example. I am assuming that I have to play with record of persons (FirstName, LastName, Age) and I will refer only these data through out this article.
Below are steps and procedure to implement the Audit Trail in our application.
I have seen few Audit Trails examples in web, they explained only about the screen name, Action, IP address and Time Stamp.
Here I have used What data changed, when and changes by Whom with IP address and TimeStamp
Step 1
Create table for Audit Trail (I have mentioned my table below) in SQL database
Table: SampleAuditTrail
-
Id
-
UserName - Who logged in
-
ProcessName - What is the process they did
-
Page – Page Name
-
Operation - What operation like (Insert, Delete, Update)
-
Description
-
IP Address
Step 2
Create Interface for AuditTrail (In DAL) and declare below function
Function Insert_AuditTrail(ByVal Data As tblAuditTrail) As IResult(Of String)
Step 3
Create Class for declared Interface(In DAL) and Implement the Declared function in the Class (Code Given Below)
Public Function Insert_AuditTrail(ByVal Data As tblAuditTrail) As IResult(Of String) Implements IDAOAuditTrailValues.Insert_AuditTrail
Dim Db As New //Your DBContextDim Res As IResult(Of String) = New QueryResult(Of String)
Try
Db.tblAuditTrails.InsertOnSubmit(Data)
Db.SubmitChanges()
Res.Output = (From var In Db.tblAuditTrails Where var.ProcessTime = Data.ProcessTime And var.UserName = Data.UserName And
var.Operation = Data.Operation).ToList(0).ID
Res.Result = DALResult.Success
Res.Message = Msg.CreateMessage(MessageKeys.MSG_SAVE, New String() {"Audit Trail"})
Catch ex As Exception
Dim dex As New DALException(Msg.CreateMessage(MessageKeys.MSG_SAVE, New String() {"AuditTrail", "Saved"}), ex)
Res.Result = DALResult.Error
Res.Message = dex.Message
Res.Exception = dex
Dim ep As New ExceptionPublisher()
Finally
Db.Dispose()
End Try
Return Res
End Function
Step 4
Create the Separate Function in DAL for getting Audit Trail values (Below are code)
Public Function GetAuditTrailInsertandUpdate(ByVal data As SampleAuditTrail, ByVal Operation As String) As IResult(Of String) Implements IDaoReviewer.GetAuditTrailInsertandUpdate
Dim
db As New
CodePointDataContext
Dim
Res1 As IResult(Of
String) = New
QueryResult(Of String)
Try
Dim strHostName = System.Net.Dns.GetHostName
Dim ta As New tblAuditTrailta.UserName = HttpContext.Current.Session.Item(2).ToString
ta.Operation = "Update"
ta.Page = "Page Name"
ta.IPAddress = HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")
ta.ProcessTime = DateTime.Now
For Each a In GetType(tblname).GetProperties()
If a.Name.ToLower <> "id" Then
If a.PropertyType.IsValueType = True Or a.PropertyType.Equals(GetType(String)) Then
If a.GetValue(Data, Nothing) = Nothing Then
ta.Description += a.Name + ":" + " " & vbCrLf
Else
ta.Description += a.Name + ":" + a.GetValue(data, Nothing).ToString & vbCrLf
End If
End If
End If
Next
Dim res1 = (New daoAuditTrailValues).Insert_AuditTrail(ta)
Catch
ex As Exception
End
Try
Return Res1
End
Function
Step 5
Now we need to call this function in every DAL function which is (Insert,
Delete, and Update Methods)
Dim
operation = "Insert"
here p is refers which data came from function
Like this we can call for Update and Delete Function
Step 6
Output we will receive like this,
|
Sno |
Username |
Time |
Form Name |
Action |
Description |
IPAddress |
|
31 |
John |
03/13/2013 |
User Creation |
Insert |
Name: Arun UserID: 102 Address:Chennai Gender:Male Remarks: Nil |
192.168.0.88 |
Conclusion
This will be the simplest method to implement with all application. Any Suggestion or feedback is highly welcome.

AnuPosted Sep 21, 2016, 2:17 AM
Sir, can u please explain me Audit Trail Page completety