C# 如何使用扩展方法将消息写入日志文件或控制台
这是我的密码C# 如何使用扩展方法将消息写入日志文件或控制台,c#,logging,console,console.writeline,C#,Logging,Console,Console.writeline,这是我的密码 class Program { static void Main(string[] args) { (from d in new DirectoryInfo("E:\\") .GetDirectories() select d.Name) .WriteToConsole(Logger.WriteToLog , true); // .WriteToConsole(Console.Write
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);
}
}
}
类程序
{
静态void Main(字符串[]参数)
{
(来自新目录信息中的d(“E:\\”)
.getDirectory()选择d.Name)
.WriteToConsole(Logger.WriteToLog,true);
//.writeConsole(Console.WriteLine);
}
}
公共静态类记录器
{
公共静态无效写入日志(动态数据)
{
string filePath=string.Format(“{0}\\log.txt”,Environment.CurrentDirectory);
var stream=File.Create(文件路径);
stream.Write(Encoding.UTF8.GetBytes(数据),0,Encoding.UTF8.GetByteCount(数据));
stream.Flush();
stream.Close();
}
}
公共静态类WriteExtensions
{
公共静态void WriteToConsole(此IEnumerable数据,Action-Action,bool-carelist=false)
{
if(护理列表)
{
//我只想通过发送数据来调用操作,而不是
//一个接一个
返回;
}
foreach(数据中的var项)
{
行动.调用(项目);
}
}
}
问题是我们可以一行一行地写入控制台..但对于写入文件,我想一次将所有内容放入。。任何帮助。。谢谢您的日志记录要求非常复杂。因此,我建议已经存在。它们具有您需要的功能,但可能还没有意识到您需要它们。支持登录控制台和日志文件,可以在配置文件中启用,而不是直接在代码中启用。还可以同时登录到多个目标。还将根据日志的严重性进行筛选。当日期更改或文件增长超过限制时,也可以滚动到另一个文件。您有一个函数
writeConsole
,它不会写入控制台。这有点令人困惑。另外,是否有理由使用操作和扩展方法?为什么不做一些正常的方式呢?第八行评论。。。取消注释将写入控制台。您希望替换一行代码。我的问题是为什么?为什么只需要替换一行代码?为什么不替换几行呢?ActionHandler将处理在不同区域写入日志的问题…比如数据库、文件、控制台等。。。。必须写入的位置的选项将来自db。。