2012-02-18 52 views
40

我刚刚安装了ELMAH.MVC(更多信息here)并想知道它的数据保存在哪里。我读过,你可以选择设置数据库的存储,但似乎默认安装使用“内存”?它是如何工作的?如果我回收应用程序池或IIS网站,是否会丢失所有数据?谢谢!ELMAH在哪里保存数据?

+0

[这](http://code.google.com/p/elmah/)是更多有用的链接了解更多信息。 – 2012-02-18 17:45:44

+0

http://code.google.com/p/elmah/ – 2012-02-18 17:46:39

+1

您在web.config/app.config中设置了大多数选项,如果您检查示例之一,您会看到(合理的)说明如何设置各种类型的储存起来。 – 2012-02-18 17:48:07

回答

36

是的,默认情况下它使用内存存储。当您的应用程序池重新启动时,会丢失elmah数据。如果我记得很清楚,ELMAH的旧版本使用App_Data文件夹中存储的XML文件...如果你想使用数据库来存储日志,只是指定您ELMAH配置部分的连接字符串:

<elmah> 
... 
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ElmahConnectionString"/> 

... 
</elmah> 

你应该有ElmahConnectionString在你的connectionStrings节,像这样:

<connectionStrings> 
    <add name="ElmahConnectionString " 
     connectionString="Initial Catalog=my_database;data source=.\SQLEXPRESS;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" /> 
... 
</connectionStrings> 

Here你可以找到例子web.config文件。

+2

我收到“无法找到存储过程'ELMAH_GetErrorsXml'。”!已经安装http://nuget.org/packages/elmah.sqlserver但仍然是同样的问题。记得我在Elmah之上使用Elmah.MVC(不知道它是否有所作为)。任何帮助?谢谢! – 2012-02-19 00:52:07

+4

明白了!回应http://stackoverflow.com/a/5380167/1133338。我不得不手动运行sql脚本来创建表。所以我想知道nuget.org/packages/elmah.sqlserver做了什么(除了添加一个空的连接字符串到我的web.config? – 2012-02-19 01:05:05

+1

它可能只是添加errorLog条目到elmah配置...它不能操纵你的数据库,因为它“不知道”如何连接到它 – 2012-02-19 01:23:42