【问题标题】:MVC Logging using Elmah, Log4Net and Health Monitoring使用 Elmah、Log4Net 和健康监控的 MVC 日志记录
【发布时间】:2012-05-25 09:30:51
【问题描述】:

我最近在 Darren 的博客 (http://dotnetdarren.wordpress.com/) 上找到了关于登录 MVC 的 6 部分系列文章。

这是一篇非常好的文章,介绍了如何使用 Elmah、Log4Net、NLog 和健康监控以及使用单个 UI 来查看和管理条目。

这篇文章写于 2010 年,但我已经在我正在开发的 MVC 4 应用程序上成功实现了它。日志记录运行良好,但在尝试查看组合 UI 中的条目时确实遇到了问题。

我收到以下错误:

“System.Data.SqlClient.SqlException:无法解决 DISTINCT 操作的排序规则冲突。”

如果我注释掉 Log4Net 的配置条目,我不会再收到错误,并且我能够看到 Elmah 和健康监控的条目。此错误仅在尝试对 Log4Net 表中的条目进行 UNION 时发生。

有人对如何解决这个问题有任何想法吗?

提前感谢您的帮助。

更新: 这是出现问题的代码(VB.NET):

For Each providerName As String In logProviders.Keys
    Dim logList As IQueryable(Of LogEventModel) = GetProvider(providerName).GetByDateRangeAndType(pageIndex, pageSize, startDate, endDate, logLevel)
    ' Error occurs on this line below, only when Log4Net is in use.
    list = If((list Is Nothing), logList, list.Union(logList))
Next

【问题讨论】:

  • 可能是 Union 中的数据类型不匹配...也许检查一下 log4net 表中有什么不同?
  • 更新:似乎是 Health Monitoring 和 Log4Net 之间的问题。我可以查看 Elmah 和健康监控或 Elmah 和 Log4Net,但我不能全部执行 3 项,因为它会导致错误。仅尝试 Log4Net & Health Monitoring 会产生相同的错误。奇怪....

标签: asp.net-mvc-3 log4net asp.net-mvc-4 elmah health-monitoring


【解决方案1】:

我也遇到过同样的问题(同一个博客系列) 如果您还没有找到解决方案,这对我有帮助:

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation

干杯

【讨论】:

  • 感谢 Arnaud,我也找到了那篇文章。不幸的是,这并不能解决它。所有文本类型列的排序规则都是相同的。
  • 其实我错过了一张桌子。添加的表“aspnet_WebEvent_ErrorCodes”将 Name 列和 Level 列设置为不同的排序规则。一旦我使用了文章中的 alter 脚本,我的问题就自行解决了。再次感谢。
猜你喜欢
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多