• 错误日志记录工具elmah。


    近来公司的服务器经常出现错误,导致网站不能访问,所以想起之前公司用到的错误提醒邮件,经常我们会受到系统上报黄页的异常信息,便于我们修复可能存在的bug,保障系统的稳定性和很好的用户体验。

    目前在一家创业型公司,什么都要自己来搞,这不,折腾好久,把这个Elmah工具部署到现在的系统上。

    机器:window 7 操作系统,家庭版,坑爹的不能安装iis,只能在本地调试运行。

    项目:asp.net mvc4

    在自己当前的项目中添加elmah.dll的引用,这里也可以通过nugit通过命令自动部署,具体参考博客:

    本地的webconfig应该如下配置:

    1.添加如下代码到<configSections>配置节点下:

         <sectionGroup name="elmah">
              <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
              <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
              <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
              <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
          </sectionGroup>

    2.添加如下代码到根节点:

    <elmah>
            <!--是否允许远程访问。0代表否、1代表是-->
            <security allowRemoteAccess="0"/>
            <!--错误信息记录到文件中-->
            <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/logs"/>存放xml的文件目录,也可以如D:\logs注意要给对应目录写入权限。
    <!--错误信息发送EMAIL,多个EMAIL间用逗号分隔。--> <errorMail from="发件箱" to="收件箱,逗号分隔" subject=" 邮件主题" async="true" smtpPort="25" smtpServer="邮件服务器" userName="发件人用户名" password="密码"/> </elmah>

    3.在system.web配置节点添加如下代码:

          <httpHandlers>
              <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
          </httpHandlers>
          <httpModules>
              <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
              <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
          </httpModules>

    运行自己的程序,然后访问例如:http://localhost:1149/elmah.axd,出现noerror提示的页面,则说明配置成功。

    然后自己在自己的应用程序中找点麻烦,让它黄页,刷新刚才的页面,就会出现对应的一条错误记录。同事,如果设置邮箱成功的话,邮箱会受到一封邮件。

    而server2008服务器上之后就不能这样配置啦,如果你访问站点\elmah.axd会出现提示404错误,然后你修改操作3为如下的配置即可搞定:

    修改后的3,添加如下代码到system.webservers节点下:注意不要重复拉handlers和modules节点。(默认handlers和modules节点都是存在的。

        <handlers>
      <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
            </handlers>
          <modules runAllManagedModulesForAllRequests="true" >
              <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
              <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
          </modules>

    大体流程就是这样,具体细节我没有深究,现在不清楚为什么404错误不提醒,只对黄页错误给予发送邮件提示。

    有知道的给提示一下。

     
  • 相关阅读:
    Java Lambda 表达式 对 Map 对象排序
    比较两个list对象是否相同
    ubuntu redis 自启动配置文件(关机有密码)
    spring中订阅redis键值过期消息通知
    网站架构之性能优化(转)
    Json转Java Bean
    spring mvc 4 校验
    java @ResponseBody返回值中去掉NULL字段
    合并两个java bean对象非空属性(泛型)
    spring mvc 删除返回字符串中值为null的字段
  • 原文地址:https://www.cnblogs.com/gxg2008540/p/mvc4.html
Copyright © 2020-2023  润新知