C# 服务器从控制台记录到文本文件

C# server logging to text file from console

我目前有一个客户端正在与本地主机上的服务器通信。当客户端与服务器通信时,服务器会跟踪正在发生的事情,例如。

string response = "Location updated for " + uname + ": " + uloc;
Console.WriteLine(response);

我试图通过将服务器控制台列出的任何内容写到 "public class".

中这样声明的文本文件中来记录日志
public static System.IO.StreamWriter serverlog = new System.IO.StreamWriter("serverlog.txt", true);

我尝试向 txt 文件添加一个 writeline,如下所示。

 string response = "Location updated for: " + commands[0];
 Console.WriteLine(response);
 serverlog.WriteLine("[" + DateTime.Now.ToString("h:mm:ss tt") + "] [Server]: " + response);
 serverlog.close();

然而,当我在serverlog.close();执行后再次尝试写入serverlog.txt时,它完全搞砸了程序,客户端到服务器的命令无法再次执行,除非程序是从 Visual Studio 重新 运行。如何再次打开 streamwriter,以便在服务器仍 运行ning 时追加到文本文件?

如果需要我的更多代码,请告诉我。

提前致谢。

编辑:

static void WriteToLog(string logtext)
    {
        System.IO.File.AppendAllText("nserverlog.txt", string.Format("{0}{1}", logtext, Environment.NewLine));
    }


WriteToLog("[" + DateTime.Now.ToString("h:mm:ss tt") + "] [Server]: " + response);

关闭 serverlog 对象后,每次要使用它时都必须重新打开它。与其经历整个混乱,不如使用 File class:

System.IO.File.AppendAllText(filepath, "text to write");

这将在内部处理所有流式写入等。无需实例化,无需关闭。

我建议您创建某种具有 writeToLog(String) 方法的日志记录 class。在该方法中,您可以写入控制台和日志文件以及您想要的任何其他位置,而不是每次都显式地执行这两项操作。