【问题标题】:Logging errors using C#使用 C# 记录错误
【发布时间】:2018-11-05 15:35:49
【问题描述】:

目前我在 Powershell 中运行了一个脚本,它同时运行多个脚本,并在 .txt 文件中使用自定义消息记录运行的内容。

但是,在执行时,我还希望能够在单独的 .txt 文件中记录任何可能发生的错误,详细说明错误以及它影响的脚本。我知道我需要使用 Try/Catch,但我想不出我的 Catch 应该使用什么。以下是我已经得到的:

ConvDlls;

clear;
$sqldir = "";
$DBPath = "";

$ConType = "ADS";



$SharedFunc = New-Object PelCFunc.SharedFunc;
$DS = New-Object System.Data.DataSet;
$Log = [MessageLogging.Msgs]::Instance;
$FullDBPath = [System.IO.Path]::Combine($DBPath,"PICS.Add");
$ConID = [guid]::NewGuid.ToString();
$Database = [PelCons.DatabaseManualMode]::Instance($ConID);



###Setup Database object
$Database.ConType = $ConType;
$Database.Connection = $SharedFunc.PelNewADSCon($FullDBPath);
Write-Output "Connection Created";


$Database.Connection.Close();
$Database.Connection.Open();

foreach ($file in [System.IO.Directory]::GetFiles($sqldir,"*.sql", 
[System.IO.SearchOption]::AllDirectories))
{
$file = [System.IO.FileInfo]::new($file);


$Log.SetLogDir("");
$str_msg = "****This script has been run successfully****`r`n`r`nScript 
Run:$file`r`n`r`n$([System.IO.File]::ReadAllText($file.FullName))";


$Log.AddMsg($str_msg);
Write-Output $str_msg;


$sql = [System.IO.File]::ReadAllText($file.FullName);


$Database.Command.CommandText = $sql;
{

try{
$Database.Command.ExecuteNonQuery();
}

catch (exception ex)
{

}

}
}
$Database.Connection.Close();

Write-Output "Complete";

【问题讨论】:

  • 在 c# 中 catch(Exception e){MessageBox.Show(e.Message)} 返回任何抛出的异常消息。因此,您可以使用自定义日志记录。就像在文本文件中写你的'e'值

标签: c# powershell logging error-handling


【解决方案1】:

您可以使用$MyInvocation 变量(属性.MyCommand)来获取有关脚本的信息。在 catch 块中,将您想要的信息写入您想要的文件中,例如

 out-file "$($MyInvocation.MyCommand.Name).log"

您还可以使用$Error[0] 获取有关最后一个错误的信息。

【讨论】:

  • 谢谢。我已经用它来生成我的 Errors.txt 文件,但它没有填充任何内容,并且其中一个脚本存在错误。我可能会错过什么?
猜你喜欢
  • 2010-09-13
  • 2012-01-05
  • 1970-01-01
  • 2013-06-30
  • 2012-08-09
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 2019-02-09
相关资源
最近更新 更多