.Net 应用程序日志记录

本文关键字:记录 日志 应用程序 Net | 更新日期: 2023-09-27 18:34:29

大家好,我有一个场景,我有一个winform应用程序作为服务器,无限数量的wform应用程序作为客户端

基本上每个客户端都连接到服务器并向服务器发送一个字符串,服务器比做一些计算并将字符串返回给客户端,但是服务器必须连接到另一台服务器来计算该字符串,并且作为来自第二台服务器的响应,我们的主服务器将响应存储在字符串变量中,并在一些特定的时间间隔后,它在文本框中显示该字符串变量,但是这个字符串变得越来越大之后每次计算,因此我的服务器有时开始在任务管理器中消耗 1GB 内存和 40% 的 CPU 使用率,当我删除字符串变量时,我的服务器在 45MB 内存和 0-4% 的 CPU 使用率上运行,我正在使用这样的字符串变量

string Serverlog += datafetched + "cl"

我也尝试过字符串生成器对象,但结果是相同的,所以任何人都可以帮助我整理事情(如何在不消耗太多内存的情况下保存日志(,还有一件事不会在任何文件中保留日志,它们仅用于将它们显示在文本框中

.Net 应用程序日志记录

最好的解决方案是将日志记录存储在某个地方,数据库/文件/winlogging/其他

您在客户端上运行哪种类型的应用程序?请注意,你使用文本框的 AppendText 函数。所以不要使用:

Textbox.Text += "additional info"

但使用

Textbox.AppendText(teTonenTekst + Environment.NewLine);

虽然记录到文件是最好的,但你提到你不希望这样。

对于基于 UI 的日志记录,我通常避免使用TextBox,而是使用带有隐藏网格线的ListViewDataGridView。这样,可以轻松地将值量截断到限制,仅将最近的数据保留在控件中。

不同类型的日志记录数据进行颜色编码也更容易。

您可以将文本写入文件或 MSMQ 或 Telnet 并清除变量。在显示从上述来源之一读取的内容时。

您应该text file用于记录应用程序操作。

我建议将日志存储在文件中,而不是将所有内容保存在变量中。我个人总是通过使用日志记录功能来做到这一点,该功能每天为每个用户创建一个单独的日志文件。这样,您可以更好地控制日志,而不必担心性能问题。看看这个例子:

    internal static void WriteLog(string str, string clientNumber)
    {
        StreamWriter logWriter = null;
        string todayDateString = DateTime.Now.Day.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Year.ToString();
        string fullLogFileName = todayDateString + "_" + clientNumber + "_log.txt";
        string LogPath = @"''server'folder'Logs'";
        string fullLogFilePathWithName = LogPath + fullLogFileName;

        if (!File.Exists(fullLogFilePathWithName))
        {
            logWriter = new StreamWriter(fullLogFilePathWithName, true);
            logWriter.WriteLine(DateTime.Now.ToString("d.MM.yyyy h:mm") + " - " + str);
            logWriter.Flush();
        }
        else
        {
            logWriter = File.AppendText(fullLogFilePathWithName);
            logWriter.WriteLine(DateTime.Now.ToString("d.MM.yyyy h:mm") + " - " + str);
            logWriter.Flush();
        }
        logWriter.Dispose();
        logWriter.Close();
    }
.

NET 已经内置了对跟踪/日志记录的支持:

http://msdn.microsoft.com/en-us/library/zs6s4h68.aspx但是,我们使用log4net,我对此非常满意:

http://logging.apache.org/log4net/从您的问题来看,不太清楚日志是由服务器还是客户端显示的。但是,log4net支持通过网络登录,例如UPD Appender。