当遇到服务器空间不足的情况,管理员一般选择以下方式来增加可用空间:
添加新的硬盘来扩大存储空间。
清理早期的日志来释放硬盘空间。
今天,我们在这里简单介绍一下第二种方案。
可以清理的日志以及清理日志的影响
可被清理的日志:
IIS日志:用户端访问IIS服务的记录
(连接时间,客户端IP,用户名,连接的用户等
);
Logging文件夹:Exchange各个组件工作情况及用户端连接日志,主要为Diagnostic,ETL,
HttpProxy,RpcHttp等;
诊断日志: Health Manager收集并记录系统运行状态的信息。
清理日志的影响:
日志用于记录服务/组件的活动状态,以及出现问题时追溯错误原因,如果删除日志,我们将无法获取该段时间中的这些信息。
如何使用Task Scheduler定期清理日志
第一部分:创建清理日志脚本
TechNet Gallery中提供了可以清理Exchange日志的脚本:Clear
Exchange 2013/2016/2019 Log & ETL Files,该脚本的作用为清理以下路径中*.log,*.blg, *.etl, *.txt格式的文件:
"C:\inetpub\logs\LogFiles\"
"C:\Program Files\Microsoft\Exchange Server\V15\Logging\"
"C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\"
"C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs"
以下为对该脚本的注释,以及运行前需要对该脚本进行的修改:
Set-Executionpolicy RemoteSigned
$days=60 #清理到距今天多少天前的日志。
$IISLogPath="C:\inetpub\logs\LogFiles\" #IIS日志的存储位置
$ExchangeLoggingPath="C:\Program Files\Microsoft\Exchange Server\V15\Logging\" #Exchange Logging文件夹位置
$ETLLoggingPath="C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\" #ETLTraces存储位置
$ETLLoggingPath2="C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs" #Diagnostics日志存储位置
Function CleanLogfiles($TargetFolder)
{
if (Test-Path $TargetFolder) {
$Now = Get-Date
$LastWrite = $Now.AddDays(-$days)
#$Files = Get-ChildItem $TargetFolder -Include *.log,*.blg, *.etl -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
$Files = Get-ChildItem "C:\Program Files\Microsoft\Exchange Server\V15\Logging\" -Recurse | Where-Object {$_.Name -like "*.log" -or $_.Name -like "*.blg" -or $_.Name -like "*.etl"} | where {$_.lastWriteTime -le "$lastwrite"} | Select-Object FullName
foreach ($File in $Files)
{Write-Host "Deleting file $File" -ForegroundColor "white"; Remove-Item $File.FullName -ErrorAction SilentlyContinue | out-null}
}
Else {
Write-Host "The folder $TargetFolder doesn't exist! Check the folder path!" -ForegroundColor "white"
}
}
CleanLogfiles($IISLogPath)
CleanLogfiles($ExchangeLoggingPath)
CleanLogfiles($ETLLoggingPath)
CleanLogfiles($ETLLoggingPath2)
第二部分:利用计划任务程序,实现自动清理日志
1. 通过服务器管理器(Server Manager)打开计划任务程序:
2. 点击新建任务并配置以下信息:
a. 常规:使用域管理员身份运行,并选择是否允许该任务在管理员未登录的时候运行
b. 触发器:选择运行该脚本的周期。
c. 操作:填写该计划任务需要处理的事件:
3. 填写完成后,会有弹窗确认管理员身份,输入凭据即可:
4. 完成后我们可以在计划任务程序界面查看该任务的状态:
这样计划任务程序会按照设定好的时间运行该脚本,从而实现自动清理服务器往期日志的目的。
[关键词]:计划任务,Task Scheduler,日志清理,Exchange 日志,Exchange 2013,Exchange 2016, Exchange 2019
希望上述信息能够帮到您。如果您对此还有其他问题,欢迎随时来我们论坛提问 (点击文章页面左上角的“提出问题”按钮快速发帖),我们会帮助您进一步调查这个问题。
如果帖子有帮到您的话,请点击左上方“投票”按钮。这将帮助到阅读这个帖子的其他用户。