关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复260或者20170713可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。
系统出问题时候排错,很多时候需要启用跟踪,生产环境我们一般也会启用 Error 级别的跟踪,每天产生跟踪文件,数量太多不但占用磁盘寻找起来也麻烦,怎么定期清理?Follow me.
为服务器启用跟踪请参考官方文档: 监视和排查 Microsoft Dynamics 365 ,这个有简体中文版的资料,翻译得不错,我就直接贴出来啦,唯一有个遗憾的地方就是参数那里应该附上英文,不然操作者可能不知道怎么设置,参数名称肯定是英文的嘛。我这里补充上了。
我这篇文章也不展开讲其他级别的监控,就只说明部署级的:
部署级别跟踪用于监视所有 Microsoft Dynamics 365 服务器角色和服务,不论服务器角色是否安装在本地计算机上。 启用部署级别跟踪后,所有服务器角色都会受到监视,例如 异步服务、沙盒处理服务、解压缩服务、Web 应用程序 (w3wp) 和 部署工具 (mmc-Tools)。 系统会创建相应的跟踪文件。
部署级别跟踪通过 Windows PowerShell 命令进行设置且在 MSCRM_CONFIG 数据库中进行维护。 部署级别跟踪只能在拥有 Microsoft Dynamics 365部署工具 服务器角色的计算机上启用。
跟踪文件位于运行 Microsoft Dynamics 365部署工具 服务器角色的计算机上的某个文件夹中。 默认情况下,文件位于 C:\crmdrop\logs。
启用部署范围内的跟踪
要打开记录最大数目信息(包括 callstack 信息的详细记录)的部署广度跟踪设置,以提供的顺序,从计算机上的Windows PowerShell控制台(部署工具 在此处运行)运行以下命令。 要启用不详细记录或改变日志文件的位置,请参看 可选参数。
可选参数
- CallStack。 记录callstack信息。 如需详细的疑难解答,建议您启用它。 默认情况下,它处于关闭状态。
- 类别 (Categories)。 指示要记录的详细程度。
- 错误 (Error)。 在默认情况下,类别值为 错误,此为最不详细的且仅为记录错误。
- 警告(Warning)。 包括警告和错误。
- 信息(Info)。 包括警告、错误和其他信息。
- 详细(Verbose)。 记录最详细的信息。
3. 目录(Directory)。 指定跟踪日志文件的位置。 默认情况下,文件位于 c:\crmdrop\logs。
4. FileSize。 在覆盖跟踪文件中的信息之前,指定日志文件的最大文件大小(单位:MB)。
禁用部署级别跟踪(仅内部部署版本)
要禁用跟踪,请在运行部署工具服务器角色的计算机上的 Windows PowerShell 控制台中运行以下命令(按此处提供的顺序):
禁用跟踪不会删除跟踪文件。 此外,Microsoft Dynamics 365 服务器 锁定使用的服务会打开跟踪文件。 因此,如果有任何 Microsoft Dynamics 365 服务和 World Wide Web 发布服务运行在您要删除跟踪文件的计算机上,您就需要重新启动这些服务。
理论讲完了,我们来实操下,看下我本地部署的Dynamics 365的部署级的跟踪设置以及如何设置,在部署工具所在的Dynamics 365服务器上以管理员身份打开PowerShell,输入如下命令:
#添加CRM相关的嵌入式管理单元
Add-PSSnapin Microsoft.Crm.PowerShell
#获取部署级的跟踪设置
$Setting = Get-CrmSetting TraceSettings
#显示部署级的跟踪设置
$Setting
#设置部署级的跟踪设置
$Setting.Enabled = $True
$Setting.CallStack=$True
$Setting.Categories="*:Error"
$Setting.FileSize=30
$Setting.Directory = "C:\Program Files\Microsoft Dynamics CRM\Trace"
Set-CrmSetting $Setting
#再获取部署级的跟踪设置,显示出来确保更新成功
$Setting = Get-CrmSetting TraceSettings
$Setting
我这里显示的截图如下:
下面我借助一个PowerShell方面微软 最有价值专家MVP ( https://github.com/victorwoo )特意为我写的 PowerScript脚本来创建一个Windows定时任务来删除文件,使用的脚本见 https://github.com/victorwoo/Remove-ExpiredFiles 。
$targetDir = 'C:\Program Files\Microsoft Dynamics CRM\Trace'
$pattern = '*.log'
$expiryDays = 30 Get-ChildItem -Recurse -File -Include $pattern -LiteralPath $targetDir | `
Where-Object {
((Get-Date) - $_.CreationTime).TotalDays -ge $expiryDays
} | `
Remove-Item
以管理员身份运行 PowerShell ISE来测试下,结果如图,不会出错,然后我将这个文件保存到了 C盘。
用Windows定时任务图形界面来创建是比较枯燥的,也容易出错(好像是可以导出到另外一个服务器导入的),我这里装逼试试,用PowerShell脚本来创建Windows定时任务,主要参考了 Microsoft Scripting Guy, Ed Wilson 的 Use PowerShell to Create Scheduled Tasks :各位看官自己将执行的PowerShell脚本名称,所在位置,执行频率,定时任务名称等都换成自己的。
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -ExecutionPolicy Unrestricted .\removeexpiredfiles.ps1' -WorkingDirectory 'C:\'
$trigger = New-ScheduledTaskTrigger -Daily -At 23:00
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "DeleteDynamicsCRMLogs" -Description "每天晚上11点删除CRM组件日志,具体多少天前的请参考执行的PowerShell脚本" -User "System"
创建完成后打开Windows的 任务计划程序可以看到如下,如我所愿,亲测可用。