【问题标题】:Trace C# Log Details跟踪 C# 日志详细信息
【发布时间】:2016-01-02 23:29:51
【问题描述】:

是否可以编写代码来跟踪用 c# 编写的日志? 例如:

string filePath = @"C:\Error.txt";
using (StreamWriter writer = new StreamWriter(filePath, true))
{
    writer.WriteLine("Message :" + ex.Message );
}

现在我想在没有打开 Error.txt 的情况下编写代码跟踪异常消息(ex.Message)。(注意:代码应该适用于跟踪任何用 asp.net+c# 开发的网站)。

【问题讨论】:

    标签: c# asp.net logging exception-handling trace


    【解决方案1】:

    当然,.NET 平台有一个强大的内置跟踪机制。请参阅that 和 MSDN 文档。它是通过静态类实现的,因此您可以在代码中的任何位置使用它。 第一步是通过代码或.config文件配置跟踪监听器:

    Trace.Listeners.Add(new TextWriterTraceListener("trace.log");
    

    然后,要记录一条消息,只需调用:

    Trace.WriteLine(ex.ToString());
    

    如果您只需要定期检查某个网站是否在线,您可以编写如下简单的内容:

    Timer t = new Timer(60000);
    t.Elapsed += (sender, e) =>
    {
        try
        {
            HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create("http://google.com");
            using (HttpWebResponse httpRes = (HttpWebResponse) httpReq.GetResponse())
            {
                if (httpRes.StatusCode != HttpStatusCode.OK)
                {
                    File.AppendAllText(@"C:\Error.txt",
                        string.Format("Server error: {0} {1}",
                         httpRes.StatusCode, httpRes.StatusDescription));
                }
            }
        }
        catch (Exception exc)
        {
            File.AppendAllText(@"C:\Error.txt", "Error: "+exc.ToString());
        }
    };
    t.Start();
    

    或者使用像 Zabbix 这样的通用监控解决方案。

    【讨论】:

    • 是否可以在没有交互客户端的情况下进行跟踪。例如一个网站 (www.tracewebsite.com) 用 asp.net + c# 编写。现在我想在不与 www.tracewebsite.com 交互的情况下跟踪它的日志。用小例子详细说明。
    • 互动是什么意思?您网站的代码在服务器上执行,因此所有跟踪消息都会发送到服务器上的文件(或您配置的任何侦听器)。
    • 谢谢。我不会在服务器中执行代码。我必须在我的机器上执行它。那就是问题所在。从我的系统与互联网连接,我必须跟踪任何其他网站的日志详细信息。
    • 嗯,这是不可能的,除非网站配置为输出所需的日志信息。如果是您的网站,您可以启用基于浏览器的ASP.NET tracing
    • 您需要某种网络爬虫吗?您能否提供一个您想要追踪的信息示例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多