3

我是 PowerShell 新手,正在编写我的第一个应用程序。应用程序将检查 Windows 服务的状态,并且(取决于许多因素)可以执行许多操作,例如停止、启动或重新启动它。我需要生成一个日志来显示它做了什么。我想使用模块,以便我的代码可重用且灵活(例如,如果我安排它自动运行,日志将需要通过电子邮件发送或写入文本文件,如果我运行它手动,我希望它输出类似Write-Host)。

我的问题是,如何创建日志?例如,在 Java 中,我会使用一个日志类public void addToLog(String log)public String getLog()方法,这些方法只处理字符串并将其留给电子邮件/显示等。

4

3 回答 3

3

我有一套相当复杂的脚本来安装我们的平台(依赖于 BizTalk、SQL Server、企业单点登录、IIS、企业库和其他一些东西)。这些脚本启动和停止服务、BizTalk 业务流程、创建或更新数据库等等。我尝试了几件事来记录日志,最后我选择了log4net,因为它易于使用和灵活。从 PowerShell 使用它是轻而易举的事。

于 2012-05-26T14:56:12.853 回答
1

请参阅我几天前在 SO 上提出的类似问题。可能有帮助。我正在使用 ANSWER - Powershell: Debug in Production / Good Exception handling中提到的相同日志模块

于 2012-05-26T12:39:05.697 回答
0

如果您需要负责生产的人员的日志,您可以使用专用 Cmdlet 添加您自己的应用程序日志。当我为我的所有脚本创建并使用一个 PowerShell 日志来为负责生产的人员发布执行(信息)和错误(与良好的异常处理相协调)的详细信息时。您可以为一个脚本专用一个日志(因为它存在一个用于 DNS 等的日志)

这是一个例子:

# List of logs
Get-EventLog -list

# Creating your own log
New-EventLog -LogName "SlxScripting" -Source "MaSource"

# List of logs
Get-EventLog -list

# Writting in your own log
Write-EventLog -LogName "SlxScripting" -EventId 12 `
               -Message "Mon Message" 
               -Source "MaSource" -EntryType Warning

# Reading in your own log
Get-EventLog -LogName "SlxScripting"  

# Suppressing your log
Remove-EventLog -LogName "SlxScripting"
于 2012-05-27T10:03:02.267 回答