.

   <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>
.
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
.
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
.
<elmah>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
<security allowRemoteAccess="false" />
<errorLog type="Elmah.OracleErrorLog, Elmah" connectionStringName="elmah-oracle" schemaOwner="" />
</elmah>
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on using ASP.NET authorization securing ELMAH. <authorization>
<allow roles="admin" />
<deny users="*" />
</authorization>
-->
</system.web>
<system.webServer>
<handlers>
<add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
.
<connectionStrings>
<!-- TODO: Replace the ****'s with the correct entries --> <add name="elmah-oracle" connectionString="Data Source=****;User ID=****;Password=****;" />
</connectionStrings>
.oracle脚本
/* ELMAH - Error Logging Modules and Handlers for ASP.NET
Copyright (c) 2004-9 Atif Aziz. All rights reserved. Author(s): James Driscoll, mailto:jamesdriscoll@btinternet.com Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */ -- $Id: Oracle.sql -- ::34Z azizatif $ -- NB This script assumes you have logged on in the schema where you want to create the ELMAH objects -- create a sequence for the errors (user to simulate an identity in SQL Server)
CREATE SEQUENCE elmah$error_seq START WITH INCREMENT BY NOMAXVALUE NOCYCLE NOCACHE NOORDER; -- create the table to store the data
-- you can optionally specify tablespaces here too!
CREATE TABLE elmah$error
(
-- if using Oracle 10g and above you can add DEFAULT SYS_GUID()
-- to the errorid definition.
-- Oracle 8i doesn't like it with an NVARCHAR2
-- haven't tested it against 9i
errorid NVARCHAR2() NOT NULL,
application NVARCHAR2() NOT NULL,
host NVARCHAR2() NOT NULL,
type NVARCHAR2() NOT NULL,
source NVARCHAR2(),
message NVARCHAR2() NOT NULL,
username NVARCHAR2(),
statuscode NUMBER NOT NULL,
timeutc DATE NOT NULL,
sequencenumber NUMBER NOT NULL,
allxml NCLOB NOT NULL,
CONSTRAINT idx_elmah$error_pk
PRIMARY KEY (errorid)
USING INDEX -- TABLESPACE "TABLESPACE FOR INDEX"
) -- TABLESPACE "TABLESPACE FOR DATA"
/ -- trigger to make sure we get our sequence number in the table
CREATE TRIGGER trg_elmah$error_bi
BEFORE INSERT ON elmah$error
FOR EACH ROW
BEGIN
SELECT elmah$error_seq.NEXTVAL INTO :new.sequencenumber FROM dual;
END trg_elmah$error_bi;
/ -- create the index on the table
CREATE INDEX idx_elmah$error_app_time_seq ON elmah$error(application, timeutc DESC, sequencenumber DESC)
/ -- package containing the procedure we need for ELMAH to log errors
CREATE OR REPLACE PACKAGE pkg_elmah$log_error
IS
PROCEDURE LogError
(
v_ErrorId IN elmah$error.errorid%TYPE,
v_Application IN elmah$error.application%TYPE,
v_Host IN elmah$error.host%TYPE,
v_Type IN elmah$error.type%TYPE,
v_Source IN elmah$error.source%TYPE,
v_Message IN elmah$error.message%TYPE,
v_User IN elmah$error.username%TYPE,
v_AllXml IN elmah$error.allxml%TYPE,
v_StatusCode IN elmah$error.statuscode%TYPE,
v_TimeUtc IN elmah$error.timeutc%TYPE
); END pkg_elmah$log_error;
/ CREATE OR REPLACE PACKAGE BODY pkg_elmah$log_error
IS
PROCEDURE LogError
(
v_ErrorId IN elmah$error.errorid%TYPE,
v_Application IN elmah$error.application%TYPE,
v_Host IN elmah$error.host%TYPE,
v_Type IN elmah$error.type%TYPE,
v_Source IN elmah$error.source%TYPE,
v_Message IN elmah$error.message%TYPE,
v_User IN elmah$error.username%TYPE,
v_AllXml IN elmah$error.allxml%TYPE,
v_StatusCode IN elmah$error.statuscode%TYPE,
v_TimeUtc IN elmah$error.timeutc%TYPE
)
IS
BEGIN
INSERT INTO elmah$error
(
errorid,
application,
host,
type,
source,
message,
username,
allxml,
statuscode,
timeutc
)
VALUES
(
UPPER(v_ErrorId),
v_Application,
v_Host,
v_Type,
v_Source,
v_Message,
v_User,
v_AllXml,
v_StatusCode,
v_TimeUtc
); END LogError; END pkg_elmah$log_error;
/ -- package containing the procedure we need for ELMAH to retrieve errors
CREATE OR REPLACE PACKAGE pkg_elmah$get_error
IS
-- NB this is for backwards compatibility with Oracle 8i
TYPE t_cursor IS REF CURSOR; PROCEDURE GetErrorXml
(
v_Application IN elmah$error.application%TYPE,
v_ErrorId IN elmah$error.errorid%TYPE,
v_AllXml OUT elmah$error.allxml%TYPE
); PROCEDURE GetErrorsXml
(
v_Application IN elmah$error.application%TYPE,
v_PageIndex IN NUMBER DEFAULT ,
v_PageSize IN NUMBER DEFAULT ,
v_TotalCount OUT NUMBER,
v_Results OUT t_cursor
); END pkg_elmah$get_error;
/ CREATE OR REPLACE PACKAGE BODY pkg_elmah$get_error
IS
PROCEDURE GetErrorXml
(
v_Application IN elmah$error.application%TYPE,
v_ErrorId IN elmah$error.errorid%TYPE,
v_AllXml OUT elmah$error.allxml%TYPE
)
IS
BEGIN
SELECT allxml
INTO v_AllXml
FROM elmah$error
WHERE errorid = UPPER(v_ErrorId)
AND application = v_Application;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_AllXml := NULL;
END GetErrorXml; PROCEDURE GetErrorsXml
(
v_Application IN elmah$error.application%TYPE,
v_PageIndex IN NUMBER DEFAULT ,
v_PageSize IN NUMBER DEFAULT ,
v_TotalCount OUT NUMBER,
v_Results OUT t_cursor
)
IS
l_StartRowIndex NUMBER;
l_EndRowIndex NUMBER;
BEGIN
-- Get the ID of the first error for the requested page
l_StartRowIndex := v_PageIndex * v_PageSize + ;
l_EndRowIndex := l_StartRowIndex + v_PageSize - ; -- find out how many rows we've got in total
SELECT COUNT(*)
INTO v_TotalCount
FROM elmah$error
WHERE application = v_Application; OPEN v_Results FOR
SELECT *
FROM
(
SELECT e.*,
ROWNUM row_number
FROM
(
SELECT /*+ INDEX(elmah$error, idx_elmah$error_app_time_seq) */
errorid,
application,
host,
type,
source,
message,
username,
statuscode,
timeutc
FROM elmah$error
WHERE application = v_Application
ORDER BY
timeutc DESC,
sequencenumber DESC
) e
WHERE ROWNUM <= l_EndRowIndex
)
WHERE row_number >= l_StartRowIndex; END GetErrorsXml; END pkg_elmah$get_error;
/ /*
-- If you are securing the packages above, you will need to grant execute
-- privileges on them so that they can be called by the user connecting to the database.
-- NB As long as you use the schema owner for the connection string, this is not necessary,
-- although this is generally discouraged by Best Practices. -- Option 1) Allow any user to execute the package (not recommended)
-- replace OWNER for the schema owner in the following statement
GRANT EXECUTE ON OWNER.pkg_elmah$log_error TO PUBLIC;
GRANT EXECUTE ON OWNER.pkg_elmah$get_error TO PUBLIC; -- Option 2) Allow a single user to execute the package (better)
-- replace OWNER for the schema owner in the following statement
GRANT EXECUTE ON OWNER.pkg_elmah$log_error TO USER_NAME;
GRANT EXECUTE ON OWNER.pkg_elmah$get_error TO USER_NAME; -- Option 3) Lock things down so that one user can only log errors, while another user can read and log errors (most secure)
-- replace OWNER for the schema owner in the following statement
-- LOGGING_USER_NAME will be used to connect to the database in all sites which log errors to the database
GRANT EXECUTE ON OWNER.pkg_elmah$log_error TO LOGGING_USER_NAME;
-- ADMIN_USER_NAME will be used to connect to the database in an admin portal which allows users to read errors
GRANT EXECUTE ON OWNER.pkg_elmah$log_error TO ADMIN_USER_NAME;
GRANT EXECUTE ON OWNER.pkg_elmah$get_error TO ADMIN_USER_NAME; -- NB if you do take this approach, be sure to set the schemaOwner parameter in your web.config
*/ Oracle创建表脚本

elmah oracle的更多相关文章

  1. Elmah 日志记录组件

    http://www.cnblogs.com/jys509/p/4571298.html 简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理 ...

  2. ELMAH入门

    简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理程序,是一种应用广泛的错误日志工具是完全可插拔.它可以动态添加到一个正在运行的ASP.NE ...

  3. 【工具推荐】ELMAH——可插拔错误日志工具

    今天看到一篇文章(构建ASP.NET网站十大必备工具(2)),里面介绍了一个ELMAH的错误日志工具,于是研究了一下. ELMAH 是 Error Logging Modules and Handle ...

  4. elmah - Error Logging Modules and Handlers for ASP.NET - 1 : 初体验

    elmah(英文):https://code.google.com/p/elmah/   写作思路:先看结果,然后再说原理   elmah文章基本内容如下   1.安装 2.基本使用 3.详细配置讲解 ...

  5. ELMAH 使用

    之前大部分系统日志记录是使用log4net.ObjectGuy Framework.NLog 等工具记录到文本或数据库. 更强大的工具可以使用 ELMAH. ELMAH(The Error Loggi ...

  6. 【工具推荐】ELMAH——可插拔错误日志工具(转)

    出处:http://www.cnblogs.com/liping13599168/archive/2011/02/23/1962625.html 今天看到一篇文章(构建ASP.NET网站十大必备工具( ...

  7. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  8. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  9. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

随机推荐

  1. 实现 Win32 程序的消息映射宏(类似 MFC )

    对于消息映射宏,不用多说了,用过 MFC 的人都很清楚.但目前有不少程序由于各种原因并没有使用 MFC,所以本帖讨论一下如何在 Win32 程序中实现类似MFC的消息映射宏.其实 Windows 的头 ...

  2. FPGA设计中的float

    在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元.但很多情况下,又需要使用浮点数进行计算提高精度. 所以需要有合适的方法计算浮点运算. 正常情况下FPGA只能以整形数据 ...

  3. Hibernate学习5—Hibernate操作对象2

    第二节:Session 常用方法讲解 2)load和get()方法: 数据库中不存在与OID 对应的记录,Load()方法会抛出异常: load方法默认采用延迟加载,load出来的对象是一个代理类.开 ...

  4. adb命令记录

    1.杀掉 adb 进程    adb kill-server 2.重启 adb 服务    adb start-server 3.重启手机         adb reboot 4.进 shell 模 ...

  5. 20165226 实验三 敏捷开发与XP实践

    实验三 敏捷开发与XP实践 实验目的 一.安装alibaba 插件,解决代码中的规范问题.在IDEA中使用工具(Code->Reformate Code)格式化代码,研究一下Code菜单,比较功 ...

  6. 协议栈CheckList

    协议?何谓协议?协议是用来干什么的? 与人类活动进行对比即可理解协议,因为我们无时无刻不在执行协议! 举一个典型交互过程: 人类协议(至少说是好的行为方式)要求一方首先进行问候(张三对李四“你好”), ...

  7. Resource interpreted as Document but transferred with MIME type application/json laravel异常请求返回警告

    一般情况下,laravel在方法里可以向前端返回数组格式 return [], 框架可以自动将数组转成JSON字符串返回,但浏览器会报MIME类型警告, 如是做APP接口可以忽视该警告: 但在前端aj ...

  8. 第十一章: Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    HDFS的体系架构 整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持. HDFS采用主从(Master/Slave)结构模型,一 ...

  9. ubuntu16.04让内核编译一次过的方法

    问题: 进入内核后,发现make menuconfig 出错,而且在在网上找到的一些安装包,安装结束后,发现make menuconfig后的图形界面虽然出来了,但是图形界面里的内容没有出来! 解决方 ...

  10. cookie加密

    Cookie中的数据以文本的形式存在客户端计算机,考虑它的安全性,最好在将数据存入Cookie之前对其进行加密. 加密的方法很多,比较简单一点的有:Base64,md5,sha等,而相对比较复杂一点的 ...