Identity Server ล็อกการล้างข้อมูล
มีวิธีใดในการล้างบันทึกสำหรับ Sitecore 9.3 Identity Server หรือไม่
ฉันค้นหาการกำหนดค่าการบันทึก แต่ไม่พบเลย ฉันต้องการอัปเดตการกำหนดค่าเพื่อให้ลบบันทึกที่เก่ากว่า 10 วันโดยอัตโนมัติ
คำตอบ
Identity Server ใช้Serilog (https://github.com/serilog/serilog) สำหรับการเขียนบันทึกและซิงก์ไฟล์เดียวถูกกำหนดค่าโดยค่าเริ่มต้น
ซึ่งจะเก็บไฟล์ 31 ไฟล์ (เป็นเวลาหนึ่งเดือน) ตามค่าเริ่มต้น หากคุณต้องการเก็บบันทึกไว้เพียง 10 วันให้ส่งretainedFileCountLimitอาร์กิวเมนต์โดยตั้งค่าเป็น 10 ใน<IS Siteroot>\sitecorehost.xmlดังที่แสดงด้านล่าง
อ้างอิง -
- https://doc.sitecore.com/developers/91/sitecore-experience-manager/en/logging.html
- https://github.com/serilog/serilog-sinks-file#limits
หากคุณต้องการทำในระดับ Sitecore เท่านั้นคุณสามารถเพิ่มรายการสำหรับโฟลเดอร์บันทึก IdentityServer ใน<agent type="Sitecore.Tasks.CleanupAgent"เว็บไซต์ CM ได้ แต่ตรวจสอบให้แน่ใจว่าคุณได้ให้สิทธิ์การลบแก่ผู้ใช้ IIS AppPool เช่น -IIS AppPool\CMSiteAppPoolUser
<remove folder="C:\inetpub\wwwroot\sc93identityserver.dev.local\logs" pattern="*.*" maxAge="10.00:00:00"/>
ฉันคิดว่ามันไม่ควรทำในระดับ Sitecore
ฉันทำสิ่งที่คล้ายกันโดยสคริปต์ PowerShell ตามกำหนดเวลา สำหรับกรณีของคุณสคริปต์ Powershell นี้ควรใช้งานได้:
$old = 10 $folder = 'your path'
Get-ChildItem $folder | Where-Object {-not $_.PSIsContainer -and $now.Subtract($_.CreationTime).Days -gt $old } | ForEach-Object {Remove-Item $_.FullName -Confirm:$false -Force -Recurse}
จากนั้นคุณต้องเพิ่มการดำเนินการของสคริปต์นี้ในตัวกำหนดตารางเวลาของ Windows หากคุณทำงานกับโฮสติ้งในสถานที่หรือใช้WebJobsถ้าคุณใช้ Azure PaaS