C# 多个线程并发读写log日志文件的简单例子
在C#中实现并发读写日志文件可以使用System.IO命名空间中的StreamWriter和StreamReader类。
以下是一个简单的示例,演示了如何在多个线程中并发读写日志文件:
using System;
using System.IO;
using System.Threading.Tasks;
public class Program
{
private static object lockObject = new object();
private static string logFilePath = "log.txt";
public static void Main()
{
// 创建一个示例日志文件
CreateLogFile();
// 启动多个线程并发写入日志
Parallel.For(0, 10, i =>
{
string logMessage = #34;Log message from thread {i}";
WriteToLog(logMessage);
});
// 读取日志文件
ReadLogFile();
}
private static void CreateLogFile()
{
// 创建日志文件(如果不存在)
if (!File.Exists(logFilePath))
{
File.Create(logFilePath).Close();
}
}
private static void WriteToLog(string message)
{
lock (lockObject)
{
using (StreamWriter writer = File.AppendText(logFilePath))
{
writer.WriteLine(#34;{DateTime.Now}: {message}");
}
}
}
private static void ReadLogFile()
{
using (StreamReader reader = File.OpenText(logFilePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
在上述示例中,我们首先创建一个日志文件(如果不存在)。
然后,我们使用Parallel.For方法启动了10个并发线程,每个线程都会写入一条日志消息到日志文件中。
为了确保并发写入的安全性,我们使用了一个锁对象lockObject来保护对日志文件的写入操作。
最后,我们使用StreamReader类读取日志文件,并将每行日志消息打印到控制台上。
请注意,这只是一个简单的示例,用于演示并发读写日志文件的基本概念。
在实际应用中,您可能需要更复杂的逻辑来处理日志文件的写入和读取,例如日志文件的轮转、日志级别的过滤等。