我应该如何在Powershell中创建可重用的“日志”对象?

时间:2012-05-26 10:32:05

标签: powershell

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

请参阅我几天前提出的类似问题。可能有帮助。我使用的是ANSWER中提到的相同的记录模块 - Powershell: Debug in Production / Good Exception Handling

答案 2 :(得分: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"