📄 auditlog.ashx
字号:
<%@ 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" %>
<%@ WebHandler Language="C#" Class="AuditLogHandler" %>
using System;
using System.Web;
using System.Data;
using System.IO;
using System.Security;
using System.Xml;
using Microsoft.SharePoint;
using ItemAuditing;
public class AuditLogHandler : IHttpHandler {
public bool IsReusable {
get { return false; }
}
public void ProcessRequest(HttpContext context) {
SPSite siteCollection = SPContext.Current.Site;
SPWeb site = SPContext.Current.Web;
SPAuditQuery wssQuery = new SPAuditQuery(siteCollection);
SPAuditEntryCollection auditCol = siteCollection.Audit.GetEntries(wssQuery);
AuditLogWorkbook log = new AuditLogWorkbook("allAluditlog");
//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.DocLocation, entry.ItemType.ToString(),
entry.ItemId.ToString(), entry.Occurred.ToLocalTime().ToString(), eventType);
}
using (Stream strDocument = log.GetDocument())
{
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.AddHeader("content-disposition", "attachment; filename=AuditLog.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();
}
}
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;
}
string GetUserNameById(int UserId, SPWeb site) {
try {
return site.SiteUsers.GetByID(UserId).Name;
}
catch {
return UserId.ToString();
}
}
protected string ParseVersionNumber(string versionString) {
try {
int startMajor = versionString.IndexOf("<Major>") + 7;
int endMajor = versionString.IndexOf("</Major>");
int lengthMajor = endMajor - startMajor;
int startMinor = versionString.IndexOf("<Minor>") + 7;
int endMinor = versionString.IndexOf("</Minor>");
int lengthMinor = endMinor - startMinor;
string majorNumber = versionString.Substring(startMajor, lengthMajor);
string minorNumber = versionString.Substring(startMinor, lengthMinor);
if (majorNumber == "0" && minorNumber == "-1")
return "N/A";
return majorNumber + "." + minorNumber;
}
catch {
return "N/A";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -