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。在该方法中,您可以写入控制台和日志文件以及您想要的任何其他位置,而不是每次都显式地执行这两项操作。
我目前有一个客户端正在与本地主机上的服务器通信。当客户端与服务器通信时,服务器会跟踪正在发生的事情,例如。
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。在该方法中,您可以写入控制台和日志文件以及您想要的任何其他位置,而不是每次都显式地执行这两项操作。