C# 多个线程并发读写log日志文件的简单例子

C# 多个线程并发读写log日志文件的简单例子

编码文章call10242025-08-18 3:55:291A+A-

在C#中实现并发读写日志文件可以使用System.IO命名空间中的StreamWriterStreamReader类。

以下是一个简单的示例,演示了如何在多个线程中并发读写日志文件:

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类读取日志文件,并将每行日志消息打印到控制台上。

请注意,这只是一个简单的示例,用于演示并发读写日志文件的基本概念。

在实际应用中,您可能需要更复杂的逻辑来处理日志文件的写入和读取,例如日志文件的轮转、日志级别的过滤等。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4