这是我的代码
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);
}
}
}
问题是我们可以逐行写入控制台..但是为了写入文件我想立刻放一下..任何帮助..谢谢
答案 0 :(得分:0)
您的日志记录要求很复杂。因此,我建议已经存在logging frameworks。它们具有您需要的功能,但可能还没有意识到您需要它们。支持登录到控制台和日志文件,可以在配置文件中启用,而不是直接在代码中启用。同时记录到多个目标。还根据日志的严重性进行过滤。当日期更改或文件超出限制时,也会翻转到另一个文件。