1

入ってくる xml ファイルのフォルダーをスキャンするフォルダー モニターを作成しています。xml ファイルがフォルダーに作成されると、ファイルが解析され、解析後に「処理済み」フォルダーに移動されます。現在、明らかにうまくいかないことがたくさんあります。このようにエラーのリストを表示できるようにしたいと思います。

ファイル名 1 >> エラー

ファイル名 2 >> エラー

しかし、どこから始めればよいか本当にわかりません。文字列/文字列のペアで辞書を作成し、それを表に表示する必要がありますか? または、ここで最良の選択肢は何ですか。グーグルで調べてみましたが、この例を見つけるのは難しいです。

前もって感謝します。

4

3 に答える 3

1

あなたが言ったように、 Dictionary を使用してデータテーブルに入れ、おそらく次のように DataGrid にバインドできます。

        Dictionary<String, String> dict = new Dictionary<String,String>();
        dict.Add("Filename1","Error1");
        dict.Add("Filename2","Error2");
        dict.Add("Filename3","Error3");
        DataTable table = new DataTable();

        table.Columns.Add("Filename", typeof(String));
        table.Columns.Add("Error_Description", typeof(String));

        foreach (KeyValuePair<String,String> dictval in dict)
            {
                table.Rows.Add(dictval.Key, dictval.Value);
            }
        dataGridView1.DataSource = table;
于 2013-06-07T12:59:42.697 に答える
1

ロギングに Enterprise Library を使用するか、次のように独自の Logger クラスを作成できます。

public static class Logger
{
    public static List<Error> Logs = new List<Error>();

    public static void Log(Exception ex,string fileName)
    {
        Logs.Add(new Error
        {
            Message = ex.Message,
            FileName = fileName
        });
        //Here you can log errors to database,txt or xml too.
    }
}

public class Error
{
    public string Message { get; set; }
    public string FileName { get; set; }
}

そして、次のように FileSystemWatcher クラスの Created イベントでロガーを使用します。

void watcher_Created(object sender, FileSystemEventArgs e)
    {
        try
        {
            //Your logic
        }
        catch (Exception ex)
        {
            Logger.Log(ex, e.Name);
            //To show your logs in grid
            dataGridView.DataSource = null;
            dataGridView.DataSource = Logger.Logs;
        }
    }
于 2013-06-07T15:17:38.480 に答える
0

log4netロギングを行うようなものを使用することを本当に検討する必要があります。ここからダウンロードできます。そして、構成はとてもシンプルです。app.configファイルで、sectionタグにタグをconfigSections追加してから、構成タグを追加できますlog4net

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="EventLogAppender" />
    </root>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <threshold value="DEBUG" />
      <applicationName value="Lantic YCS WebServer" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="(%-5level %date{hh}:%date{mm}:%date{ss} [%thread] %logger [%property{NDC}] ) %message %n" />
      </layout>
    </appender>
  </log4net>

</configuration>

次に、コードでそれを初期化するだけでよいので、すべてのクラス ファイルの先頭に次の行をドロップします。

private static readonly ILog log = LogManager.GetLogger(typeof(Global));

次のようなことを言うことができます。

log.Error(...);

また、アプリケーションを最初に起動するときに、次の行を実行することを忘れないでください。

log4net.Config.XmlConfigurator.Configure();

ここで、私が個人的に抱えている、より興味深い懸念に対処します。フォルダーモニターを構築していると述べました。あなたは本当にそれを構築したくない、または必要としません。FileSystemWatcherすでに利用可能なものをそのまま使用してください。これは非常に効率的で、フィルタリングも可能なため、必要なメッセージを取得できます。

于 2013-06-07T12:53:06.713 に答える