0

これが私のコードです

class Program
{
    static void Main(string[] args)
    {
        (from d in new DirectoryInfo("E:\\")
    .GetDirectories() select d.Name)
             .WriteToConsole(Logger.WriteToLog , true);
            //    .WriteToConsole(Console.WriteLine);
    }
}

public static class Logger
{
    public static void WriteToLog(dynamic data)
    {
        string filePath = string.Format("{0}\\log.txt", Environment.CurrentDirectory);
        var stream = File.Create(filePath);
        stream.Write(Encoding.UTF8.GetBytes(data), 0, Encoding.UTF8.GetByteCount(data));
        stream.Flush();
        stream.Close();
    }
}

public static class WriteExtensions
{
    public static void WriteToConsole<T1>(this IEnumerable<T1> data , Action<T1> action, bool carelist = false)
    {
        if (carelist)
        {
            // all i want is to invoke action by sending data rather than
    // one by one
            return;
        }
        foreach (var item in data)
        {
            action.Invoke(item);
        }
    }
}

問題は、コンソールに行ごとに書き込むことができることです..しかし、ファイルに書き込むために、私は一度にすべてを入れたいです..何か助けて..ありがとう

4

1 に答える 1

0

ロギング要件が複雑であることが明らかになりました。したがって、既存のロギング フレームワークをお勧めします。必要な機能を備えていても、その必要性にまだ気付いていない可能性があります。コンソールとログ ファイルへのロギングがサポートされており、コードで直接ではなく、構成ファイルで有効にすることができます。また、同時に複数のターゲットにログインします。また、ログの重大度に基づくフィルタリング。また、日付が変更されたとき、またはファイルが制限を超えたときに、別のファイルにロールオーバーします。

于 2013-11-13T11:40:10.393 に答える