📄 auditlogviewer.aspx
字号:
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Assembly Name="ItemAuditing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7fd3ed697555604d" %>
<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="ItemAuditing" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<script runat="server">
protected override bool RequireSiteAdministrator
{
get { return true; }
}
protected override void OnLoad(EventArgs e)
{
SPSite siteColl = SPContext.Current.Site;
SPWeb site = SPContext.Current.Web;
SPAuditQuery wssQuery = new SPAuditQuery(siteColl);
SPAuditEntryCollection auditCol = siteColl.Audit.GetEntries(wssQuery);
SPSite siteColl = SPContext.Current.Site;
SPWeb site = SPContext.Current.Web;
SPAuditQuery wssQuery = new SPAuditQuery(siteColl);
SPAuditEntryCollection auditCol = siteColl.Audit.GetEntries(wssQuery);
DataTable table = new DataTable();
table.Columns.Add("User", typeof(string));
table.Columns.Add("DocLocation", typeof(string));
table.Columns.Add("ItemType", typeof(string));
table.Columns.Add("ItemId", typeof(string));
table.Columns.Add("Occurred", typeof(DateTime));
table.Columns.Add("Event", typeof(string));
DataRow newRow;
foreach (SPAuditEntry entry in auditCol) {
newRow = table.Rows.Add();
newRow["User"] = GetUserNameById(entry.UserId, site);
newRow["DocLocation"] = entry.DocLocation;
newRow["ItemType"] = entry.ItemType.ToString();
newRow["ItemId"] = entry.ItemId.ToString();
newRow["Occurred"] = entry.Occurred.ToLocalTime();
newRow["Event"] = ConvertEventToLocal(entry.Event);
}
SPBoundField boundField = new SPBoundField();
boundField.HeaderText = "用户";
boundField.DataField = "User";
SPGridView1.Columns.Add(boundField);
boundField = new SPBoundField();
boundField.HeaderText = "文档位置";
boundField.DataField = "DocLocation";
SPGridView1.Columns.Add(boundField);
boundField = new SPBoundField();
boundField.HeaderText = "项目类型";
boundField.DataField = "ItemType";
SPGridView1.Columns.Add(boundField);
boundField = new SPBoundField();
boundField.HeaderText = "项目编号";
boundField.DataField = "ItemId";
SPGridView1.Columns.Add(boundField);
boundField = new SPBoundField();
boundField.HeaderText = "发生时间";
boundField.DataField = "Occurred";
boundField.ControlStyle.Width = new Unit(120);
SPGridView1.Columns.Add(boundField);
boundField = new SPBoundField();
boundField.HeaderText = "事件";
boundField.DataField = "Event";
SPGridView1.Columns.Add(boundField);
SPGridView1.AutoGenerateColumns = false;
SPGridView1.DataSource = table.DefaultView;
SPGridView1.DataBind();
SPGridView1.AllowSorting = true;
SPGridView1.HeaderStyle.Font.Bold = true;
//DataTable table = new DataTable();
//table.Columns.Add("用户", typeof(string));
//table.Columns.Add("文档位置", typeof(string));
//table.Columns.Add("项目类型", typeof(string));
//table.Columns.Add("项目编号", typeof(string));
//table.Columns.Add("发生时间", typeof(DateTime));
//table.Columns.Add("事件", typeof(string));
//DataRow newRow;
//foreach (SPAuditEntry entry in auditCol)
//{
// newRow = table.Rows.Add();
// newRow["用户"] = GetUserNameById(entry.UserId, site);
// newRow["文档位置"] = entry.DocLocation;
// newRow["项目类型"] = entry.ItemType.ToString();
// newRow["项目编号"] = entry.ItemId.ToString();
// newRow["发生时间"] = entry.Occurred.ToLocalTime();
// newRow["事件"] = ConvertEventToLocal(entry.Event);
//}
//SPBoundField boundField = new SPBoundField();
//boundField.HeaderText = "用户";
//boundField.DataField = "用户";
//SPGridView1.Columns.Add(boundField);
//boundField = new SPBoundField();
//boundField.HeaderText = "文档位置";
//boundField.DataField = "文档位置";
//SPGridView1.Columns.Add(boundField);
//boundField = new SPBoundField();
//boundField.HeaderText = "项目类型";
//boundField.DataField = "项目类型";
//SPGridView1.Columns.Add(boundField);
//boundField = new SPBoundField();
//boundField.HeaderText = "项目编号";
//boundField.DataField = "项目编号";
//SPGridView1.Columns.Add(boundField);
//boundField = new SPBoundField();
//boundField.HeaderText = "发生时间";
//boundField.DataField = "发生时间";
//boundField.ControlStyle.Width = new Unit(120);
//SPGridView1.Columns.Add(boundField);
//boundField = new SPBoundField();
//boundField.HeaderText = "事件";
//boundField.DataField = "事件";
//SPGridView1.Columns.Add(boundField);
//SPGridView1.AutoGenerateColumns = false;
//SPGridView1.DataSource = table.DefaultView;
//SPGridView1.DataBind();
//SPGridView1.AllowSorting = true;
//SPGridView1.HeaderStyle.Font.Bold = true;
}
string GetUserNameById(int UserId, SPWeb site)
{
try
{
return site.SiteUsers.GetByID(UserId).Name;
//return site.Users.GetByID(UserId).Name; - YOU CANNOT USE SPWeb.Users collection here
}
catch
{
return UserId.ToString();
}
}
protected String ConvertEventToLocal(SPAuditEventType Event)
{
string operate = String.Empty;
switch (Event)
{
case SPAuditEventType.AuditMaskChange: //A change in the types of events that are audited for the object.
operate = "更改事件类型[审核]";
break;
case SPAuditEventType.CheckIn: //Check-in of the object.
operate = "签入";
break;
case SPAuditEventType.CheckOut: //Check-out of the object.
operate = "签出";
break;
case SPAuditEventType.ChildDelete: //Deletion of one of the child objects of the object.
operate = "子项目删除";
break;
case SPAuditEventType.ChildMove: //Move of one of the child objects of the object.
operate = "子项目移动";
break;
case SPAuditEventType.Copy: //Copying of the object.
operate = "复制";
break;
case SPAuditEventType.Custom: //Custom action or event.
operate = "自定义";
break;
case SPAuditEventType.Delete: //Deletion of the object.
operate = "删除";
break;
case SPAuditEventType.EventsDeleted: //Deletion of audited events that are connected with the object from the SharePoint database.
operate = "删除事件[审核]";
break;
case SPAuditEventType.Move: //Move of the object.
operate = "移动";
break;
case SPAuditEventType.ProfileChange: //Change in a profile that is associated with the object.
operate = "个性化更改";
break;
case SPAuditEventType.SchemaChange: //Change in the schema of the object.
operate = "架构更改";
break;
case SPAuditEventType.Search: //Search on the object.
operate = "搜索";
break;
case SPAuditEventType.SecGroupCreate: //Creation of a user group for a SharePoint site collection.
operate = "用户组创建[网站集]";
break;
case SPAuditEventType.SecGroupDelete: //Deletion of a group that is associated with a SharePoint site collection.
operate = "用户组删除[网站集]";
break;
case SPAuditEventType.SecGroupMemberAdd: //Addition of a new member to a group that is associated with a SharePoint site collection.
operate = "添加用户[网站集]";
break;
case SPAuditEventType.SecGroupMemberDel: //Deletion of a member from a group that is associated with a SharePoint site collection.
operate = "删除用户[网站集]";
break;
case SPAuditEventType.SecRoleBindBreakInherit: //Turning off inheritance of security settings from the parent of the object.
operate = "不从父级继承权限";
break;
case SPAuditEventType.SecRoleBindInherit: //Turning on inheritance of security settings from the parent of the object.
operate = "从父级继承权限";
break;
case SPAuditEventType.SecRoleBindUpdate: //Changing the permissions of a user or group for the object.
operate = "更改用户(组)权限";
break;
case SPAuditEventType.SecRoleDefBreakInherit: //Turning off inheritance of role (that is, permission level) definitions from the parent of the object.
operate = "停止从父级继承权限级别";
break;
case SPAuditEventType.SecRoleDefCreate://Creation of a new role (that is, permission level) definition associated with the object.
operate = "添加权限级别";
break;
case SPAuditEventType.SecRoleDefDelete: //Removal of a role (that is, permission level) definition associated with the object.
operate = "移除权限级别";
break;
case SPAuditEventType.SecRoleDefModify: //Changing a role (that is, permission level) definition associated with an object.
operate = "更改权限级别";
break;
case SPAuditEventType.Undelete: //Restoration of an object from the Recycle Bin.
operate = "从回收站还原";
break;
case SPAuditEventType.Update: //Changing the properties of an object or creating an object.
operate = "更改";
break;
case SPAuditEventType.View: //Viewing of the object by a user.
operate = "查看";
break;
case SPAuditEventType.Workflow:
operate = "工作流";
break;
default:
operate = "未知操作";
break;
}
return operate;
}
protected void cmdDeleteAllEntires_Click(object sender, EventArgs e)
{
SPSite siteColl = SPContext.Current.Site;
siteColl.Audit.DeleteEntries(DateTime.Now.ToLocalTime().AddDays(1));
siteColl.Audit.Update();
Response.Redirect(Request.RawUrl);
}
protected void cmdRefreshPage_Click(object sender, EventArgs e)
{
Response.Redirect(Request.RawUrl);
}
/// <summary>
/// 导出EXCEL文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void cmdExportToExcel_Click(object sender, EventArgs e)
{
HttpContext context=HttpContext.Current;
SPSite siteCollection = SPContext.Current.Site;
SPAuditQuery wssQuery = new SPAuditQuery(siteCollection);
SPAuditEntryCollection auditCol = siteCollection.Audit.GetEntries(wssQuery);
AuditLogWorkbook log = new AuditLogWorkbook();
//log.WriteHeaderInfo(list.Title, item.Name, DateTime.Now);
string eventType;
foreach (SPAuditEntry entry in auditCol)
{
if (entry.SourceName == "CustomViewAuditEvent")
{
eventType = "查看审核日志";
}
else
{
eventType = ConvertEventToLocal(entry.Event);
}
//log.WriteEntry(GetUserNameById(entry.UserId, site),
// entry.Occurred.ToLocalTime().ToString(),
// eventType,
// ParseVersionNumber(entry.EventData));
log.WriteEntry(GetUserNameById(entry.UserId, site),entry.DocLocation,entry.ItemType,
entry.ItemId,entry.Occurred.ToLocalTime().ToString(),eventType);
}
using(Stream strDocument = log.GetDocument())
{
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.AddHeader("content-disposition", "attachment; filename=AudutLog.xlsx");
context.Response.ContentType = @"application/vnd.-excel.document.12";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
strDocument.Position = 0;
using(BinaryWriter writer = new BinaryWriter(context.Response.OutputStream))
{
BinaryReader reader = new BinaryReader(strDocument);
writer.Write(reader.ReadBytes((int)strDocument.Length));
reader.Close();
writer.Close();
strDocument.Close();
}
context.Response.Flush();
context.Response.Close();
context.Response.End();
}
</script>
<asp:Content ID="Content6" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<asp:Button ID="cmdRefreshPage" runat="server" Text="刷新页面" OnClick="cmdRefreshPage_Click" />
<asp:Button ID="cmdExportToExcel" runat="server" Text="导出审核日志[Excel]" OnClick="cmdExportToExcel_Click" />
<asp:Button ID="cmdDeleteAllEntires" runat="server" Text="清除审核日志" OnClick="cmdDeleteAllEntires_Click" />
<hr />
<SharePoint:SPGridView ID="SPGridView1" runat="server" AutoGenerateColumns="False"
Width="100%">
<AlternatingRowStyle CssClass="ms-alternating" />
</SharePoint:SPGridView>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
审核日志查看器
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
runat="server">
审核日志
</asp:Content>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -