如何检索自动报告并将其保存到数据库?

时间:2010-03-18 23:33:37

标签: python error-reporting

我有一个Web服务器,它将使用Python,PHP或Perl中的脚本。我对这些语言中的任何一种都不太了解,但在这三种语言中,Python似乎最不可怕。它有一个MySql数据库设置,我知道足够的SQL来管理它并为它编写查询。

我还有一个程序,我想添加自动错误报告。出了问题,它会向我的服务器发送错误报告。

我不知道怎么做是编写一个将放在Web服务器上的Python脚本,当我的程序发送错误报告时,请执行以下操作:

  • 收到错误报告。
  • 将其解析为多个部分。
  • 将其插入数据库。
  • 让服务器给我发电子邮件。

从我理解的一点点来看,如果我只知道自己在做什么,这似乎不应该太难。有人能指出我的网站,解释我需要创建这样的脚本的基本原则吗?

2 个答案:

答案 0 :(得分:0)

我不知道python所以我向你展示了php。

假设您的错误将代码发送到file.php?report=report+is+here

以下内容有效。

<?

 # code to initialize the database here
 $rc = mysql_connect(...);

 if (!$rc)
 {
  die ("Could not connect to the database.");
 }

 // probably should do some error checking in a try .. catch
 mysql_execute("
                 INSERT INTO BugTable(report) 
                 VALUES('".addslashes($_REQUEST['report'])."')");

 mail("youremail@set.com","Bug Report Recieved", "Recieved the following bug report: {$_REQUEST['report']}");

 ?>

关于php的一切都在php.net。

答案 1 :(得分:0)

使用Python,它取决于您的网络托管。一些共享的Web主机执行PHP,然后只通过CGI执行Perl / Python(和Ruby等)。使用Python,您可以使用CGI模型构建Web内容,或者 - 如果您拥有支持它的托管 - WSGI。如果您要进行Python和CGI,只需查看cgi模块的文档即可。或者,使用web.py。您基本上需要在输入中读取特定URI上的HTTP POST消息。 web.py文档应该描述如何编写它。

对于解析 - 取决于它的发送格式。您可以使用x-www-form-encoded来传输简单的键值对。我不知道web.py的复杂性(我主要使用Ruby),但它基本上应该为你提供一种获取'request'对象的方法,用它做一些事情然后你修改一个包含'return'的对象什么回到浏览器。使用web.py,这是web.input() - 请参阅here

对于任何更复杂的事情,您需要基本上以您选择的格式POST数据 - XML,JSON,魔法二进制blob格式。你如何解析它取决于它是什么。只需谷歌“python xml”或“python json”或其他什么,你就会找到最新的库。

插入数据库 - 使用Python的mysqldb库(我使用Postgres,主要来自Ruby和Java,所以我不完全熟悉最新的Python MySQL库)。

要发送电子邮件,您可以使用sendmail(在Unix系统上安装sendmail),也可以使用Python的smtplib将其发送到SMTP服务器 - 如果您只是在管理电子邮件中,请使用某些内容像一个Gmail帐户作为您的SMTP服务器,因为您知道它将起作用。哦,web.py让它变得简单 - 它有一个内置的mail module。我想,请使用它。

您可能需要考虑安全性 - 这意味着身份验证,这意味着表单验证。 RTFM适用于您使用的任何语言和数据库库,因此您不需要打开SQL注入 - 并对电子邮件执行相同的操作。您不希望成为垃圾邮件的代理。