วิกิพีเดีย: "เส้นทางการตรวจสอบ (เรียกอีกอย่างว่าบันทึกการตรวจสอบ) เป็นบันทึกตามลำดับเวลาที่เกี่ยวข้องกับความปลอดภัย ชุดของบันทึก และ/หรือปลายทางและแหล่งที่มาของบันทึกที่ให้หลักฐานที่เป็นเอกสารเกี่ยวกับลำดับของกิจกรรมที่ส่งผลกระทบต่อการดำเนินการ ขั้นตอน หรือเหตุการณ์เฉพาะ ณ เวลาใดๆ".
ABP Framework ให้ระบบการบันทึกการตรวจสอบที่ขยายได้ที่ทำการบันทึกการตรวจสอบโดยอัตโนมัติโดยการประชุมและจัดให้มีการกำหนดค่าชี้เพื่อควบคุมระดับของบันทึกการตรวจสอบ
หนึ่งวัตถุบันทึกการตรวจสอบ(ดูส่วนออบเจกต์บันทึกการตรวจสอบด้านล่าง) โดยทั่วไปจะสร้างและบันทึกตามคำขอเว็บ ประกอบด้วย;
- รายละเอียดคำขอและการตอบสนอง(เช่น URL, วิธี Http, ข้อมูลเบราว์เซอร์, รหัสสถานะ HTTP... เป็นต้น)
- ดำเนินการแล้ว(การกระทำของตัวควบคุมและการเรียกใช้เมธอดบริการแอปพลิเคชันพร้อมพารามิเตอร์)
- การเปลี่ยนแปลงเอนทิตีเกิดขึ้นในคำขอของเว็บ
- ข้อยกเว้นข้อมูล (หากมีข้อผิดพลาดขณะดำเนินการคำขอ)
- ระยะเวลาของคำขอ(เพื่อวัดประสิทธิภาพของแอปพลิเคชัน)
เทมเพลตการเริ่มต้นได้รับการกำหนดค่าสำหรับระบบบันทึกการตรวจสอบซึ่งเหมาะสำหรับแอปพลิเคชันส่วนใหญ่ ใช้เอกสารนี้เพื่อควบคุมระบบบันทึกการตรวจสอบโดยละเอียด
การสนับสนุนผู้ให้บริการฐานข้อมูล
- สนับสนุนอย่างเต็มที่โดยเอนทิตีเฟรมเวิร์กคอร์ผู้ให้บริการ.
- การบันทึกการเปลี่ยนแปลงเอนทิตีไม่ได้รับการสนับสนุนโดยMongoDBผู้ให้บริการ. คุณสมบัติอื่น ๆ ทำงานได้ตามที่คาดไว้
ใช้การตรวจสอบ ()
ใช้การตรวจสอบ ()
ควรเพิ่มมิดเดิลแวร์ไปยังไปป์ไลน์คำขอ ASP.NET Core เพื่อสร้างและบันทึกบันทึกการตรวจสอบ หากคุณสร้างแอปพลิเคชันโดยใช้เทมเพลตเริ่มต้นมันถูกเพิ่มเข้าไปแล้ว
ตัวเลือกการตรวจสอบ Abp
ตัวเลือกการตรวจสอบ Abp
เป็นหลักวัตถุตัวเลือกเพื่อกำหนดค่าระบบบันทึกการตรวจสอบ คุณสามารถกำหนดค่าได้ในกำหนดค่าบริการ
วิธีการของคุณโมดูล:
กำหนดค่า(ตัวเลือก =>{ options.IsEnabled = false; //ปิดใช้งานระบบการตรวจสอบ});
นี่คือรายการตัวเลือกที่คุณสามารถกำหนดค่าได้:
เปิดใช้งาน
(ค่าเริ่มต้น:จริง
): รูทสวิตช์เพื่อเปิดหรือปิดระบบการตรวจสอบ อ็อพชันอื่นจะไม่ถูกใช้หากมีค่านี้เท็จ
.ซ่อนข้อผิดพลาด
(ค่าเริ่มต้น:จริง
): ระบบบันทึกการตรวจสอบซ่อนและเขียนปกติบันทึกหากมีข้อผิดพลาดเกิดขึ้นขณะบันทึกออบเจกต์บันทึกการตรวจสอบ หากการบันทึกบันทึกการตรวจสอบมีความสำคัญต่อระบบของคุณ ให้ตั้งค่าเป็นเท็จ
เพื่อโยนข้อยกเว้นในกรณีที่ซ่อนข้อผิดพลาดIsEnabledFor AnonymousUsers
(ค่าเริ่มต้น:จริง
): หากคุณต้องการเขียนบันทึกการตรวจสอบเฉพาะสำหรับผู้ใช้ที่ผ่านการรับรองความถูกต้อง ให้ตั้งค่านี้เป็นเท็จ
. หากคุณบันทึกบันทึกการตรวจสอบสำหรับผู้ใช้ที่ไม่ระบุตัวตน คุณจะเห็นโมฆะ
สำหรับรหัสผู้ใช้
ค่าสำหรับผู้ใช้เหล่านี้AlwaysLogOnException
(ค่าเริ่มต้น:จริง
): หากคุณตั้งค่าเป็นจริง ระบบจะบันทึกบันทึกการตรวจสอบในกรณียกเว้น/ข้อผิดพลาดเสมอ โดยไม่ตรวจสอบตัวเลือกอื่นๆ (ยกเว้นเปิดใช้งาน
ซึ่งปิดใช้งานการบันทึกการตรวจสอบโดยสมบูรณ์)IsEnabledForIntegrationService
(ค่าเริ่มต้น:เท็จ
): การบันทึกการตรวจสอบถูกปิดใช้งานสำหรับบริการบูรณาการโดยค่าเริ่มต้น. ตั้งค่าคุณสมบัตินี้เป็นจริง
เพื่อเปิดใช้งานIsEnabledForGetRequests
(ค่าเริ่มต้น:เท็จ
): คำขอ HTTP GET ไม่ควรเปลี่ยนแปลงใดๆ ในฐานข้อมูลตามปกติ และระบบบันทึกการตรวจสอบจะไม่บันทึกวัตถุบันทึกการตรวจสอบสำหรับคำขอ GET ตั้งค่านี้เป็นจริง
เพื่อเปิดใช้งานสำหรับคำขอ GETปิดใช้งาน LogActionInfo
(ค่าเริ่มต้น:เท็จ
): หากคุณตั้งค่าเป็น "จริง" จะไม่มีการบันทึกอีกต่อไปตรวจสอบ LogActionInfo
.ชื่อแอปพลิเคชัน
: หากแอปพลิเคชันหลายตัวกำลังบันทึกบันทึกการตรวจสอบลงในฐานข้อมูลเดียว ให้ตั้งค่าคุณสมบัตินี้เป็นชื่อแอปพลิเคชันของคุณ เพื่อให้คุณสามารถแยกความแตกต่างของบันทึกของแอปพลิเคชันต่างๆ ได้ หากคุณไม่ตั้งค่า มันจะตั้งค่าจากIApplicationInfoAccessor.ApplicationName
ค่าซึ่งเป็นชื่อชุดประกอบรายการตามค่าเริ่มต้นประเภทที่ถูกละเว้น
: รายการของพิมพ์
s ที่จะถูกละเว้นสำหรับการบันทึกการตรวจสอบ หากเป็นประเภทเอนทิตี การเปลี่ยนแปลงสำหรับเอนทิตีประเภทนี้จะไม่ถูกบันทึก รายการนี้ยังใช้ในขณะที่ทำให้พารามิเตอร์การดำเนินการเป็นอนุกรมตัวเลือกประวัติเอนทิตี
: รายการตัวเลือกที่ใช้เพื่อกำหนดว่าประเภทเอนทิตีถูกเลือกเพื่อบันทึกการเปลี่ยนแปลงเอนทิตีหรือไม่ ดูส่วนด้านล่างสำหรับรายละเอียดผู้ให้ข้อมูล
: รายการของผู้ให้ข้อมูลบันทึกการตรวจสอบ
การใช้งาน ผู้ร่วมให้ข้อมูลเป็นวิธีการขยายระบบบันทึกการตรวจสอบ ดูส่วน "ผู้ร่วมให้ข้อมูลบันทึกการตรวจสอบ" ด้านล่างAlwaysLogSelectors
: รายการตัวเลือกเพื่อบันทึกบันทึกการตรวจสอบสำหรับเกณฑ์ที่ตรงกัน
ตัวเลือกประวัติเอนทิตี
การบันทึกการเปลี่ยนแปลงทั้งหมดของเอนทิตีทั้งหมดของคุณจำเป็นต้องใช้พื้นที่ฐานข้อมูลจำนวนมาก สำหรับเหตุผลนี้,ระบบบันทึกการตรวจสอบจะไม่บันทึกการเปลี่ยนแปลงใดๆ สำหรับเอนทิตี เว้นแต่คุณจะกำหนดค่าอย่างชัดเจน.
หากต้องการบันทึกการเปลี่ยนแปลงทั้งหมดของเอนทิตีทั้งหมด เพียงใช้AddAllEntities()
วิธีการขยาย
กำหนดค่า (ตัวเลือก =>{ options.EntityHistorySelectors.AddAllEntities();});
ตัวเลือก EntityHistory Selectors
จริง ๆ แล้วรายการประเภทเพรดิเคต คุณสามารถเขียนแลมบ์ดานิพจน์เพื่อกำหนดตัวกรองของคุณ
ตัวเลือกตัวอย่างด้านล่างทำเช่นเดียวกันกับAddAllEntities()
วิธีการขยายที่กำหนดไว้ข้างต้น:
กำหนดค่า (ตัวเลือก =>{ options.EntityHistorySelectors.Add ( ใหม่ NamedTypeSelector ( "MySelectorName", พิมพ์ => { ถ้า (typeof(IEntity).IsAssignableFrom(ชนิด)) { คืนค่าจริง; } อื่น { คืนค่าเท็จ; } } ) );});
เงื่อนไขtypeof(IEntity).IsAssignableFrom(ประเภท)
จะจริง
สำหรับคลาสใด ๆ ที่ใช้IEntity
อินเทอร์เฟซ (ในทางเทคนิคแล้วนี่คือเอนทิตีทั้งหมดในแอปพลิเคชันของคุณ) คุณสามารถตรวจสอบและส่งคืนตามเงื่อนไขจริง
หรือเท็จ
ขึ้นอยู่กับความชอบของคุณ
ตัวเลือก EntityHistory Selectors
เป็นวิธีที่ยืดหยุ่นและไดนามิกในการเลือกเอนทิตีสำหรับการบันทึกการตรวจสอบ อีกวิธีหนึ่งคือการใช้ตรวจสอบแล้ว
และปิดใช้งานการตรวจสอบ
คุณลักษณะต่อเอนทิตี
เปิดใช้งาน/ปิดใช้งานการบันทึกการตรวจสอบสำหรับบริการ
เปิด/ปิดสำหรับตัวควบคุมและการดำเนินการ
การดำเนินการของคอนโทรลเลอร์ทั้งหมดจะถูกบันทึกโดยค่าเริ่มต้น (ดูIsEnabledForGetRequests
ด้านบนสำหรับคำขอ GET)
คุณสามารถใช้[ปิดการตรวจสอบ]
หากต้องการปิดใช้งานสำหรับประเภทคอนโทรลเลอร์เฉพาะ:
[ปิดใช้งานการตรวจสอบ]HomeController คลาสสาธารณะ: AbpController{ //...}
ใช้[ปิดการตรวจสอบ]
สำหรับการดำเนินการใด ๆ เพื่อควบคุมในระดับการดำเนินการ:
HomeController คลาสสาธารณะ: AbpController{ [DisableAuditing] งาน async สาธารณะ หน้าแรก () { //... } งาน async สาธารณะ OtherActionLogged() { //... }}
เปิด/ปิดสำหรับบริการแอปพลิเคชันและวิธีการ
บริการสมัครการเรียกใช้เมธอดยังรวมอยู่ในบันทึกการตรวจสอบตามค่าเริ่มต้น คุณสามารถใช้[ปิดการตรวจสอบ]
ในระดับบริการหรือวิธีการ
เปิด/ปิดสำหรับบริการอื่นๆ
สามารถเปิดใช้งานการบันทึกการตรวจสอบการดำเนินการสำหรับคลาสประเภทใดก็ได้ (ลงทะเบียนและแก้ไขจากการฉีดพึ่งพา) ในขณะที่เปิดใช้งานสำหรับตัวควบคุมและบริการแอปพลิเคชันตามค่าเริ่มต้นเท่านั้น
ใช้[ตรวจสอบแล้ว]
และ[ปิดการตรวจสอบ]
สำหรับคลาสหรือเมธอดใด ๆ ที่ต้องบันทึกการตรวจสอบ นอกจากนี้ ชั้นเรียนของคุณสามารถ (โดยตรงหรือโดยเนื้อแท้) ใช้เปิดใช้งาน Iauditing แล้ว
อินเทอร์เฟซเพื่อเปิดใช้งานการบันทึกการตรวจสอบสำหรับคลาสนั้นตามค่าเริ่มต้น
เปิด/ปิดสำหรับเอนทิตีและคุณสมบัติ
เอนทิตีจะถูกละเว้นในการบันทึกการตรวจสอบการเปลี่ยนแปลงเอนทิตีในกรณีต่อไปนี้
- หากคุณเพิ่มประเภทเอนทิตีให้กับ
AbpAuditingOptions.IgnoredTypes
(ตามที่อธิบายไว้ก่อนหน้านี้) จะถูกละเว้นโดยสิ้นเชิงในระบบการบันทึกการตรวจสอบ - หากวัตถุไม่ใช่เอนทิตี(ไม่ปฏิบัติ
IEntity
โดยตรงหรือโดยเนื้อแท้ - เอนทิตีทั้งหมดใช้อินเทอร์เฟซนี้เป็นค่าเริ่มต้น) - หากประเภทเอนทิตีไม่เป็นสาธารณะ
มิฉะนั้นคุณสามารถใช้ตรวจสอบแล้ว
เพื่อเปิดใช้งานการบันทึกการตรวจสอบการเปลี่ยนแปลงเอนทิตีสำหรับเอนทิตี:
[ตรวจสอบ] MyEntity คลาสสาธารณะ : Entity{ //...}
หรือปิดใช้งานสำหรับเอนทิตี:
[ปิดใช้งานการตรวจสอบ] MyEntity คลาสสาธารณะ : เอนทิตี{ //...}
การปิดใช้งานการบันทึกการตรวจสอบอาจจำเป็นต่อเมื่อเอนทิตีถูกเลือกโดยAbpAuditingOptions.EntityHistorySelectors
ที่ได้อธิบายไว้ก่อนหน้านี้
คุณสามารถปิดใช้งานการตรวจสอบคุณสมบัติบางอย่างของเอนทิตีของคุณสำหรับการควบคุมโดยละเอียดเกี่ยวกับการบันทึกการตรวจสอบ:
[ตรวจสอบ] MyUser คลาสสาธารณะ: เอนทิตี { ชื่อสตริงสาธารณะ { รับ; ชุด; } อีเมลสตริงสาธารณะ { รับ; ชุด; } [ปิดใช้งานการตรวจสอบ] // ละเว้นรหัสผ่านในการตรวจสอบการบันทึกรหัสผ่านสตริงสาธารณะ { รับ; ชุด; }}
ระบบบันทึกการตรวจสอบจะบันทึกการเปลี่ยนแปลงสำหรับผู้ใช้ของฉัน
เอนทิตีในขณะที่ละเว้นรหัสผ่าน
ทรัพย์สินที่อาจเป็นอันตรายให้เก็บไว้เพื่อความปลอดภัย
ในบางกรณี คุณอาจต้องการบันทึกพร็อพเพอร์ตี้บางรายการแต่ไม่ต้องสนใจรายการอื่นๆ ทั้งหมด การเขียน[ปิดการตรวจสอบ]
สำหรับคุณสมบัติอื่น ๆ ทั้งหมดจะน่าเบื่อ ในกรณีเช่นนี้ ให้ใช้[ตรวจสอบแล้ว]
เฉพาะสำหรับคุณสมบัติที่ต้องการและทำเครื่องหมายเอนทิตีด้วย[ปิดการตรวจสอบ]
คุณลักษณะ:
[DisableAuditing] คลาสสาธารณะ MyUser : Entity{ [Audited] // บันทึกเฉพาะการเปลี่ยนชื่อสตริงสาธารณะ Name { รับ; ชุด; } อีเมลสตริงสาธารณะ { รับ; ชุด; } รหัสผ่านสตริงสาธารณะ { รับ; ชุด; }}
I.AuditingStore
I.AuditingStore
เป็นอินเทอร์เฟซที่ใช้ในการบันทึกวัตถุบันทึกการตรวจสอบ (อธิบายด้านล่าง) โดย ABP Framework หากคุณต้องการบันทึกออบเจกต์บันทึกการตรวจสอบไปยังที่เก็บข้อมูลแบบกำหนดเอง คุณสามารถใช้I.AuditingStore
ในแอปพลิเคชันของคุณเองและแทนที่โดยใช้ระบบหัวฉีดพึ่งพา.
SimpleLogAuditingStore
ใช้ในกรณีที่ไม่มีการลงทะเบียนร้านค้าตรวจสอบบัญชี เพียงแค่เขียนวัตถุการตรวจสอบตามมาตรฐานระบบบันทึก.
โมดูลการบันทึกการตรวจสอบได้รับการกำหนดค่าในเทมเพลตเริ่มต้นบันทึกวัตถุบันทึกการตรวจสอบไปยังฐานข้อมูล (รองรับผู้ให้บริการฐานข้อมูลหลายราย) ดังนั้น ส่วนมากคุณไม่สนใจว่าจะทำอย่างไรI.AuditingStore
ถูกนำไปใช้และ
วัตถุบันทึกการตรวจสอบ
หนึ่งวัตถุบันทึกการตรวจสอบถูกสร้างขึ้นสำหรับแต่ละคนขอเว็บโดยค่าเริ่มต้น. ออบเจกต์บันทึกการตรวจสอบสามารถแสดงด้วยไดอะแกรมความสัมพันธ์ต่อไปนี้:
- ข้อมูลบันทึกการตรวจสอบ: วัตถุรากที่มีคุณสมบัติดังต่อไปนี้:
ชื่อแอปพลิเคชัน
: เมื่อคุณบันทึกบันทึกการตรวจสอบของแอปพลิเคชันต่างๆ ลงในฐานข้อมูลเดียวกัน คุณสมบัตินี้จะใช้เพื่อแยกความแตกต่างของบันทึกของแอปพลิเคชันรหัสผู้ใช้
: ID ของผู้ใช้ปัจจุบัน หากผู้ใช้เข้าสู่ระบบแล้วชื่อผู้ใช้
: ชื่อผู้ใช้ของผู้ใช้ปัจจุบัน หากผู้ใช้ได้เข้าสู่ระบบแล้ว (ค่านี้ไม่ได้ขึ้นอยู่กับโมดูล/ระบบระบุตัวตนสำหรับการค้นหา)รหัสผู้เช่า
: รหัสของผู้เช่าปัจจุบันสำหรับแอปพลิเคชันที่มีผู้เช่าหลายคนชื่อผู้เช่า
: ชื่อของผู้เช่าปัจจุบันสำหรับแอปพลิเคชันที่มีผู้เช่าหลายคนเวลาดำเนินการ
: เวลาที่วัตถุบันทึกการตรวจสอบนี้ถูกสร้างขึ้นระยะเวลาการดำเนินการ
: ระยะเวลาดำเนินการทั้งหมดของคำขอ หน่วยเป็นมิลลิวินาที สามารถใช้เพื่อสังเกตประสิทธิภาพของแอปพลิเคชันรหัสลูกค้า
: รหัสของไคลเอ็นต์ปัจจุบัน ถ้าไคลเอ็นต์ได้รับการตรวจสอบสิทธิ์แล้ว โดยทั่วไปไคลเอ็นต์คือแอปพลิเคชันของบุคคลที่สามที่ใช้ระบบผ่าน HTTP APIชื่อลูกค้า
: ชื่อของลูกค้าปัจจุบัน ถ้ามีที่อยู่ IP ของลูกค้า
: ที่อยู่ IP ของไคลเอ็นต์/อุปกรณ์ผู้ใช้รหัสความสัมพันธ์
: ปัจจุบันรหัสความสัมพันธ์. รหัสสหสัมพันธ์ใช้เพื่อเชื่อมโยงบันทึกการตรวจสอบที่เขียนโดยแอปพลิเคชันต่างๆ (หรือไมโครเซอร์วิส) ในการดำเนินการทางตรรกะเดียวข้อมูลเบราว์เซอร์
: ชื่อเบราว์เซอร์/ข้อมูลเวอร์ชันของผู้ใช้ปัจจุบัน หากมีวิธีการ Http
: วิธีการ HTTP ของคำขอปัจจุบัน (GET, POST, PUT, DELETE... เป็นต้น)HttpStatusCode
: รหัสสถานะการตอบสนอง HTTP สำหรับคำขอนี้URL
: URL ของคำขอ
- ตรวจสอบ LogActionInfo: โดยทั่วไปแล้ว การดำเนินการบันทึกการตรวจสอบจะเป็นการดำเนินการของผู้ควบคุมหรือบริการสมัครการเรียกใช้เมธอดระหว่างการร้องขอเว็บ บันทึกการตรวจสอบหนึ่งรายการอาจมีการดำเนินการหลายอย่าง วัตถุการกระทำมีคุณสมบัติดังต่อไปนี้:
ชื่อบริการ
: ชื่อของตัวควบคุม/บริการที่ดำเนินการชื่อเมธอด
: ชื่อของวิธีการดำเนินการของตัวควบคุม/บริการพารามิเตอร์
: ข้อความที่จัดรูปแบบ JSON แทนพารามิเตอร์ที่ส่งไปยังเมธอดเวลาดำเนินการ
: เวลาที่วิธีนี้ถูกดำเนินการระยะเวลาการดำเนินการ
: ระยะเวลาของการดำเนินการเมธอด หน่วยเป็นมิลลิวินาที สามารถใช้เพื่อสังเกตประสิทธิภาพของวิธีการ
- ข้อมูลการเปลี่ยนแปลงเอนทิตี: แสดงถึงการเปลี่ยนแปลงของเอนทิตีในคำขอเว็บนี้ บันทึกการตรวจสอบอาจมีการเปลี่ยนแปลงเอนทิตีเป็นศูนย์หรือมากกว่า การเปลี่ยนแปลงเอนทิตีมีคุณสมบัติดังต่อไปนี้:
เปลี่ยนเวลา
: เวลาที่มีการเปลี่ยนแปลงเอนทิตีเปลี่ยนประเภท
: enum ที่มีฟิลด์ต่อไปนี้:สร้าง
(0),อัปเดต
(1) และลบแล้ว
(2).รหัสเอนทิตี
: รหัสของเอนทิตีที่เปลี่ยนแปลงรหัสผู้เช่านิติบุคคล
: รหัสของผู้เช่านิติบุคคลนี้EntityTypeชื่อเต็ม
: พิมพ์ชื่อ (คลาส) ของเอนทิตีที่มีเนมสเปซแบบเต็ม (เช่นAcme.BookStore.Bookสำหรับเอนทิตีหนังสือ)
- EntityPropertyChangeInfo: แสดงถึงการเปลี่ยนแปลงคุณสมบัติของเอนทิตี ข้อมูลการเปลี่ยนแปลงเอนทิตี (อธิบายไว้ด้านบน) อาจมีการเปลี่ยนแปลงคุณสมบัติอย่างน้อยหนึ่งรายการด้วยคุณสมบัติต่อไปนี้:
ใหม่มูลค่า
: มูลค่าใหม่ของคุณสมบัติ มันคือโมฆะ
หากเอนทิตีถูกลบค่าเดิม
: เก่า/ค่าเดิมก่อนการเปลี่ยนแปลง. มันคือโมฆะ
หากเอนทิตีถูกสร้างขึ้นใหม่ชื่อทรัพย์สิน
: ชื่อของคุณสมบัติในคลาสเอนทิตีPropertyTypeFullName
: พิมพ์ (คลาส) ชื่อของคุณสมบัติที่มีเนมสเปซแบบเต็ม
- ข้อยกเว้น: วัตถุบันทึกการตรวจสอบอาจมีข้อยกเว้นเป็นศูนย์หรือมากกว่า ด้วยวิธีนี้ คุณจะได้รับรายงานคำขอที่ล้มเหลว
- ความคิดเห็น: ค่าสตริงที่กำหนดเองเพื่อเพิ่มข้อความที่กำหนดเองไปยังรายการบันทึกการตรวจสอบ วัตถุบันทึกการตรวจสอบอาจมีความคิดเห็นเป็นศูนย์หรือมากกว่านั้น
นอกจากคุณสมบัติมาตรฐานที่อธิบายไว้ข้างต้นแล้วข้อมูลบันทึกการตรวจสอบ
,ตรวจสอบ LogActionInfo
และข้อมูลการเปลี่ยนแปลงเอนทิตี
วัตถุใช้IHasExtraProperties
อินเทอร์เฟซ เพื่อให้คุณสามารถเพิ่มคุณสมบัติแบบกำหนดเองให้กับวัตถุเหล่านี้ได้
ผู้ร่วมให้ข้อมูลบันทึกการตรวจสอบ
คุณสามารถขยายระบบการตรวจสอบได้โดยการสร้างคลาสที่ได้รับมาจากผู้ให้ข้อมูลบันทึกการตรวจสอบ
คลาสที่กำหนดบริจาคล่วงหน้า
และโพสต์มีส่วนร่วม
วิธีการ
ผู้ร่วมสร้างไว้ล่วงหน้าเพียงรายเดียวคือAspNetCoreAuditLogContributor
คลาสซึ่งตั้งค่าคุณสมบัติที่เกี่ยวข้องสำหรับคำขอ HTTP
ผู้ร่วมให้ข้อมูลสามารถตั้งค่าคุณสมบัติและคอลเลกชันของข้อมูลบันทึกการตรวจสอบ
ชั้นเพื่อเพิ่มข้อมูลเพิ่มเติม
ตัวอย่าง:
MyAuditLogContributor คลาสสาธารณะ: AuditLogContributor{ สาธารณะแทนที่เป็นโมฆะ PreContribute (บริบท AuditLogContributionContext) { var currentUser =context.ServiceProvider.GetRequiredService(); Context.AuditInfo.SetProperty( "MyCustomClaimValue", currentUser.FindClaimValue("MyCustomClaim") ); } แทนที่สาธารณะเป็นโมฆะ PostContribute (บริบท AuditLogContributionContext) { context.AuditInfo.Comments.Add ("ความคิดเห็นบางส่วน ... "); }}
Context.ServiceProvider
สามารถใช้เพื่อแก้ไขบริการจากการฉีดพึ่งพา.บริบท.AuditInfo
สามารถใช้เพื่อเข้าถึงวัตถุบันทึกการตรวจสอบปัจจุบันเพื่อจัดการได้
หลังจากสร้างผู้ให้ข้อมูลดังกล่าวแล้ว คุณต้องเพิ่มลงในAbpAuditingOptions.Contributors
รายการ:
กำหนดค่า (ตัวเลือก =>{ options.Contributors.Add (ใหม่ MyAuditLogContributor());});
IAauditLogScope & IAuditingManager
ส่วนนี้จะอธิบายถึงIAauditLogScope
&ผู้จัดการฝ่ายตรวจสอบบัญชี
บริการสำหรับกรณีการใช้งานขั้นสูง
หนึ่งขอบเขตบันทึกการตรวจสอบเป็นขอบเขตโดยรอบที่สร้างและประหยัดวัตถุบันทึกการตรวจสอบ (อธิบายก่อนหน้านี้) ตามค่าเริ่มต้น ขอบเขตบันทึกการตรวจสอบจะถูกสร้างขึ้นสำหรับคำขอเว็บโดย Audit Log Middleware (ดูใช้การตรวจสอบ ()
ส่วนด้านบน)
เข้าถึงขอบเขตบันทึกการตรวจสอบปัจจุบัน
ผู้ร่วมให้ข้อมูลบันทึกการตรวจสอบได้รับการอธิบายไว้ข้างต้น เป็นวิธีสากลในการจัดการกับวัตถุบันทึกการตรวจสอบ เป็นการดีหากคุณจะได้รับคุณค่าจากบริการ
หากคุณต้องการจัดการออบเจกต์บันทึกการตรวจสอบในจุดใดก็ได้ของแอปพลิเคชันของคุณ คุณสามารถเข้าถึงขอบเขตบันทึกการตรวจสอบปัจจุบันและรับออบเจ็กต์บันทึกการตรวจสอบปัจจุบัน (ไม่ขึ้นกับวิธีจัดการขอบเขต) ตัวอย่าง:
MyService คลาสสาธารณะ: ITransientDependency{ ส่วนตัวอ่านอย่างเดียว IAuditingManager _auditingManager; MyService สาธารณะ (IAuditingManager auditingManager) { _auditingManager = auditingManager; } งาน async สาธารณะ DoItAsync () { var currentAuditLogScope = _auditingManager.Current; ถ้า (currentAuditLogScope != null) { currentAuditLogScope.Log.Comments.Add ( "ดำเนินการวิธี MyService.DoItAsync :)" ); currentAuditLogScope.Log.SetProperty("MyCustomProperty", 42); } }}
ตรวจสอบเสมอว่า_auditingManager.ปัจจุบัน
เป็นโมฆะหรือไม่ เนื่องจากถูกควบคุมในขอบเขตภายนอก และคุณไม่สามารถทราบได้ว่ามีการสร้างขอบเขตบันทึกการตรวจสอบก่อนที่จะเรียกใช้เมธอดของคุณหรือไม่
สร้างขอบเขตบันทึกการตรวจสอบด้วยตนเอง
คุณแทบไม่ต้องสร้างขอบเขตบันทึกการตรวจสอบด้วยตนเอง แต่ถ้าจำเป็น คุณสามารถสร้างขอบเขตบันทึกการตรวจสอบได้โดยใช้ผู้จัดการฝ่ายตรวจสอบบัญชี
ดังตัวอย่างต่อไปนี้
MyService คลาสสาธารณะ: ITransientDependency{ ส่วนตัวอ่านอย่างเดียว IAuditingManager _auditingManager; MyService สาธารณะ (IAuditingManager auditingManager) { _auditingManager = auditingManager; } async สาธารณะ Task DoItAsync() { ใช้ (var auditingScope = _auditingManager.BeginScope()) { ลอง { //Call other services... } catch (Exception ex) { //Add exceptions _auditingManager.Current.Log.Exceptions.Add (อดีต); โยน; } ในที่สุด { //บันทึกบันทึกเสมอเพื่อรอการตรวจสอบScope.SaveAsync(); } } }}
คุณสามารถโทรหาบริการอื่น ๆ พวกเขาอาจโทรหาคนอื่น ๆ พวกเขาอาจเปลี่ยนหน่วยงานและอื่น ๆ การโต้ตอบทั้งหมดเหล่านี้จะถูกบันทึกเป็นวัตถุบันทึกการตรวจสอบรายการเดียวในบล็อกสุดท้าย
โมดูลการบันทึกการตรวจสอบ
โมดูลการบันทึกการตรวจสอบใช้โดยทั่วไปI.AuditingStore
เพื่อบันทึกวัตถุบันทึกการตรวจสอบไปยังฐานข้อมูล รองรับผู้ให้บริการฐานข้อมูลหลายราย โมดูลนี้ถูกเพิ่มไปยังเทมเพลตเริ่มต้นตามค่าเริ่มต้น
ดูเอกสารโมดูลการบันทึกการตรวจสอบสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้