elmah를 적용해보자.
설치한다.
Web.conf가 자동으로 변경됨.
개발시는 이걸 보고 서버에서는 사용안할려면
<elmah>
<security allowRemoteAccess="false">
</elmah>
이러면 된다..그런데 난 서버에서 나는 에러도 보고 싶다..(이메일로) 그러므로 true로 바구자.
<elmah>
<security allowRemoteAccess="true">
</elmh>
그럼 아무나 다 볼수가 있게 되버린다.
그러므로 특정 유저만 볼수있게 바꿔보자.
appsetting에 잇는 다음 부분을 수정해야한다.
<add key="elmah.mvc.allowedRoles" value="*">
<add key="elmah.mvc.allowedUsers" value="myusername">
myusername으로 세팅을 해서 내가 이 아이디로 로그인할때만 엘마를 볼수가 있다. 권한으로 처리해도 된다. 그런데 난 그냥 귀찮아서 유저이름만 처리
이 두개를 조절하면 권한과 그룹으로 다 정리가능 *는 모든 사용자를 의미.
이제 서버에서 디플로이해서 확인해보자. 보인다.. 예전 버전에는 http://www.server.com/elmah 면 된다. 아무내용도 없다..이제 url에 아무글자나 처서 에러를 발생해보자.
http://myserver.com/asdfasdfasdfasdfasdf
에러가 난다..
다시 elmah로 간다….화면에 내용이 나온걸 알수있다.
Details 링크를 클릭해서 들어가보면 아래와 같이 자세한 내용을 확인할 수 있다
이제 대충 완성됫다.
이메일로 받아보자.
<elmah>
<security allowRemoteAccess="true"/>
<errorMail
from="servername@aaa.com"
to= "support@aaa.com"
subject="email title"/>
</elmah>
이메일로 받게 해두엇는데 이메일 세팅이 기본 web.conf가없다.
<mailSettins>
<snmp>
<network host="localhost">
</snmp>
</mailSettins>
Elmah 태그에 errormail을 추가해주자..
웹서버를 재시작하면 이메일로 아까 그 에러가 온다.
아까 서버에서 권한을 줘서 다른사람이 못보게 햇는데 이부분이 불안하면 Allowremoteaccess를 false로 하고 모든 에러를 이메일로 받아도 된다.
Elmah를 디비에 저장할수도 있다.
일단 스크립트를 다운받자. https://code.google.com/p/elmah/wiki/Downloads?tm=2
이렇다.. mssql로 하자..쉽다..
클릭하면 스크립트를 다운 받을수 있다.
테이블 하나와 기타 몇가지를 더 설치한다.
디비는 web_err_log라고 하나 만든 다음
스크립트를 실행하자.
디비 완성.
Web.config에 디비 정보를 넣자…
<connectionStrins>
<add name="www_err_logDbContext" connectionString="Data Source=localhost;Initial Catalog=LogDatabase;Persist Security Info=True;User ID=username;Password=password;MultipleActiveResultSets=True" providerName="System.Data.SqlClient">
</connectionStrins>
커넥션 스트링에 추가
<configSectios>
<sectionGroup name="elma">
<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">
</sectionGrop>
</configSectios>
<elmah>
<security allowRemoteAccess="true">
<errorMail
from="aaa@bbb.com"
to="support@xxx.com"
subject="ko-atv.com web error mail"/>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="www_err_logDbContext ">
</elmah>
완료
서버에 디플로이 웹서버 재시작을 한다.
에러를 발생하자.
http://myserver.com/asdfasdfasdfasdfasdf
에러 발생되면
<a href="http://myserver.com/elmah">
페이지에도 나오고
디비에도 저장됨을 확인할 수 있다.
Select * from ELMAH_Error