0

ログ メッセージを logtext.txt ファイルに保存しています。このファイル内のログ メッセージに番号を付けたいのですが、これを達成するための解決策はありますか? 以下は私のコードです:

// Create a writer and open the file:
StreamWriter log;

if (!File.Exists(AssetXMLLogMessagesPath + ".txt"))
{
    log = new StreamWriter( AssetXMLLogMessagesPath + ".txt", true);
}
else
{
    log = File.AppendText(AssetXMLLogMessagesPath + ".txt");
}                

// Write to the file:
log.WriteLine(" "+"<------------------------------"+" AssetImporter at "+":" +" "+ DateTime.Now.ToString("F") + "--------------------------------------->");
log.WriteLine(msg);                
log.WriteLine();

// Close the stream:
log.Close();
4

2 に答える 2

0

メッセージ番号は自分で保持する必要があります。そのため、ロギング機能を担当するクラスを作成します。LogEntriesそこで、新しいログメッセージごとに増加するプロパティを追加します。

例えば:

public static class VerySimpleLogger
{
    public static string Path{ get; set; }
    public static int LogEntries { get; set; }
    public static bool WithTimeStamp { get; set; }

    public static void Log(string message)
    {
        LogEntries++;
        if(WithTimeStamp)
            message = string.Format("{0}. {1}:\t{2}{3}", LogEntries, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(), message, Environment.NewLine);
        else
            message = string.Format("{0}.\t{1}{2}", LogEntries, message, Environment.NewLine);
        File.AppendAllText(Path, message);
    }
}

使用法:

VerySimpleLogger.Path = @"C:\Temp\logtext.txt";
for (int i = 1; i <= 100; i++)
{
    VerySimpleLogger.Log("Log-message #" + i);
}

ただしLogEntries、プログラムを再起動すると、数値は再びゼロになることに注意してください。ファイル内の行数はカウントされません。したがって、これは、1 回の実行でログ ファイルを作成する必要があるツールや、Windows サービスなどの長時間実行されるアプリケーションに最適です。これが複数のユーザーから使用される winforms アプリケーションであり、すべてが同じログ ファイルを共有する必要がある場合、これは実行可能なアプローチではありません。

于 2013-09-13T15:50:19.073 に答える