簡體   English   中英

C#服務器從控制台記錄到文本文件

[英]C# server logging to text file from console

我目前有一個與localhost上的服務器通信的客戶端。 當客戶端與服務器通信時,服務器會跟蹤正在發生的事情,例如。

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

我試圖通過將其寫到在“公共類”中聲明的文本文件中來記錄服務器控制台列出的所有內容。

public static System.IO.StreamWriter serverlog = new System.IO.StreamWriter("serverlog.txt", true);

我嘗試將寫入行添加到txt文件,如下所示。

 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時serverlog.close(); 如果執行該命令,則會完全破壞該程序,除非從Visual Studio重新運行該程序,否則無法再次執行從客戶端到服務器的命令。 如何再次打開流編寫器,以便可以在服務器仍在運行時附加到文本文件?

讓我知道是否需要更多代碼。

提前致謝。

編輯:

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類:

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

那將在內部處理所有的streamwriting等。 無需實例化,也無需關閉。

我建議您創建一種具有writeToLog(String)方法的日志記錄類。 在該方法內部,您可以寫入控制台,日志文件以及所需的任何其他位置,而不必每次都明確地進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM