异常日志的记录和监控主要依赖于StackExchange.Exceptional组件,默认已经被引进来了。

先看下config文件夹下的ExceptionsSettings.json.example文件

{
"warningRecentCount": "", //警告提醒最近条目数,当超出该值在头部高亮显示警告
"criticalRecentCount": "", //严重警告提醒最近条目数,当超出该值在头部高亮显示严重警告
"viewGroups": "StatusExceptionsRO", //安全模式“ad"下的分组查看权限设置
// You can have a simple applications list here, or a grouped structure when dealing with many apps.
//"applications": [ //产生异常日志的程序
// "Core",
// "Chat",
// "Stack Auth",
// "StackExchange.com",
// "API",
// "API v2",
// "Area 51",
// "Status",
// "Push Server",
// "Sockets",
// "Careers",
// "BackOffice",
// "Control Panel"
//], //以分组在形式归类异常日志,未在groups定义的在others中显示
"groups": [
{
"name": "Core Q&A",
"applications": [
"Core",
"Chat",
"Stack Auth",
"StackExchange.com",
"API v2",
"Sockets",
"Area 51",
"Open ID",
"Stack Server",
"StackSnippets",
"Status"
]
},
{
"name": "Careers",
"applications": [
"Careers",
"BackOffice",
"BackOffice",
"Control Panel",
"StackShop",
"CareersAuth"
]
},
{
"name": "Mobile",
"applications": [
"Push Server"
]
},
{
"name": "Ads & Data",
"applications": [
"Prov Read API"
]
}
],
"stores": [ //异常日志存储位置
{
"name": "New York",
"queryTimeoutMs": ,
"pollIntervalSeconds": ,
"connectionString": "Data Source=192.168.11.210;Initial Catalog=Opserver;User ID=sa;Password=Luzou+18518095396;"
}
],
  "stackTraceReplacements": [
    {
      "name": "github",
      "pattern": "(?<= in )https?://raw.githubusercontent.com/([^/]+/)([^/]+/)([^/]+/)(.*?):line (\\d+)",
      "replacement": "<a href=\"https://github.com/$1$2blob/$3$4#L$5\">$4:line $5</a>"
    }
  ]
}

首先需要建一下数据库

CREATE TABLE [dbo].[Exceptions](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[GUID] [uniqueidentifier] NOT NULL,
[ApplicationName] [nvarchar](50) NOT NULL,
[MachineName] [nvarchar](50) NOT NULL,
[CreationDate] [datetime] NOT NULL,
[Type] [nvarchar](100) NOT NULL,
[IsProtected] [bit] NOT NULL,
[Host] [nvarchar](100) NULL,
[Url] [nvarchar](500) NULL,
[HTTPMethod] [nvarchar](10) NULL,
[IPAddress] [varchar](40) NULL,
[Source] [nvarchar](100) NULL,
[Message] [nvarchar](1000) NULL,
[Detail] [nvarchar](max) NULL,
[StatusCode] [int] NULL,
[SQL] [nvarchar](max) NULL,
[DeletionDate] [datetime] NULL,
[FullJson] [nvarchar](max) NULL,
[ErrorHash] [int] NULL,
[DuplicateCount] [int] NOT NULL,
CONSTRAINT [PK_Exceptions] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO SET ANSI_PADDING OFF
GO ALTER TABLE [dbo].[Exceptions] ADD DEFAULT ((0)) FOR [IsProtected]
GO ALTER TABLE [dbo].[Exceptions] ADD DEFAULT ((1)) FOR [DuplicateCount]
GO

然后webconfig下需要进行配置

<Exceptional applicationName="Status">
<ErrorStore type="SQL" connectionString="Data Source=192.168.11.210;Initial Catalog=Opserver;User ID=sa;Password=*******" />
</Exceptional>
 <!-- Which ErrorStore to use, if no element is declared here a Memory store with defaults will be used -->
<!--<ErrorStore type="Memory" />-->
<!-- Other store types, common attributes:
- rollupSeconds: optional (default seconds), determines how long the window is to roll up exceptions with the same stack trace - to not roll up
- backupQueueSize: optional (default ), determines how many errors to cache (excluding rollups) in memory when logging fails...every seconds we'll retry logging and flush these out to the final store -->
<!-- JSON: size defaults to , this is how many files are kept before the oldest error is removed -->
<!--<ErrorStore type="JSON" path="~/Errors" size="" />-->
<!-- SQL: only a connection string or connection string name is needed, many applications can log to the same place as long as they have unique names (otherwise we can't tell them apart). -->
<!--<ErrorStore type="SQL" connectionString="Server=.;Database=Exceptions;Uid=Exceptions;Pwd=myPassword!" />-->
<!--<ErrorStore type="SQL" connectionStringName="MyConnectionString" />-->
<!-- You can also use a MySQL Database with the MySQL ErorrStore -->
<!--<ErrorStore type="MySQL" connectionString="Server=.;Database=Exceptions;Username=Exceptions;Pwd=myPassword!" />-->
<!--<ErrorStore type="MySQL" connectionStringName="MyConnectionString" />-->

好吧,其实这就搞定了,就是这么简单,然后上下效果图

Opserver系列目录 http://www.cnblogs.com/xiaopotian/category/1007536.html

.NET开源MSSQL、Redis监控产品Opserver之Exception配置的更多相关文章

  1. .NET开源MSSQL、Redis监控产品Opserver之安全配置

    简介 Opserver是Stack Overflow的开源监控解决方案,由Stack Exchange发布,基于.NET框架构建.开源地址:https://github.com/opserver/Op ...

  2. .NET开源MSSQL、Redis监控产品Opserver之MSSQL配置

    MSSQL的配置比较简单,主要包括三部分: 默认配置(defaultConnectionString).集群配置(clusters).单实例配置(instances) defaultConnectio ...

  3. .NET开源MSSQL、Redis监控产品Opserver之Redis配置

    安全与基础配置地址:http://www.cnblogs.com/xiaopotian/p/6898310.html edis监控数据实例的加载可以查看Opserver.Core项目data/Redi ...

  4. Redis学习笔记之一 : 配置redis

    Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久 ...

  5. Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置

    Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...

  6. Redis简介、安装、配置、启用学习笔记

    前一篇文章有介绍关系型数据库和非关系型数据库的差异,现在就来学习一下用的较广的非关系型数据库:Redis数据库 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-v ...

  7. redis简介、安装、配置和数据类型

    redis简介.安装.配置和数据类型 redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 它支持字符串.哈希表.列表.集合.有序集合, ...

  8. Linux下的python3,virtualenv,Mysql、nginx、redis等常用服务安装配置

    Linux下的python3,virtualenv,Mysql.nginx.redis等常用服务安装配置   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环 ...

  9. 开源IDE CodeBlocks的下载安装、配置、简单编程

    如果没有集成开发环境(IDE),在linux下开发程序将非常繁琐,IDE是指将编辑.编译.调试等功能集成在一个桌面环境上,这样就大大方便了用户.IDE一般包括代码编辑器.编译器.调试器和图形界面用户工 ...

随机推荐

  1. [转][Java]语法规范

    先来个 阿里的 Java 开发手册(2017.5.20 发布 v1.2.0 .pdf) 本文来自:http://blog.csdn.net/sinat_27115575/article/details ...

  2. MapReduce项目中的一个JVM错误问题分析和解决

    最近一周都在查项目的各种问题,由于对原有的一个MapReduce分析数据的项目进行重构,减少了运行时的使用资源,但是重构完成后,在Reduce端总是不定时地抛出JVM的相关错误,非常随机,没有发现有什 ...

  3. VS2015 异常 :遇到异常。这可能是由某个扩展导致的

    原因是安装程序时将注册表修改了,解决方案: 修改注册表: 64位机器: [HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\ ...

  4. java爬虫简单实例

    爬虫的实质就是打开网页源代码进行匹配查找,然后获取查找到的结果./** 获取* 将正则规则进行对象的封装. * Pattern p = Pattern.compile("a*b") ...

  5. AOP 动态织入的.NET实现

    AOP(面向切面编程:Aspect Oriented Programming)为诸如日志记录.性能统计.安全控制.事务处理.异常处理等与具体业务逻辑无关,却需要在全局范围进行执行的功能提供了一种良好重 ...

  6. linux查看进程是否存在,不存在则重启

    ps -ef | grep 程序名| grep -v grep | wc -l cd $(dirname $) source ~/.bash_profile count=`ps -ef | grep ...

  7. apache 自定义404错误页面

    1.有些提供web服务的网站,在用户访问一个不存在的网站文件时,会提示404错误,如下所示: 现在要求自定义一个错误页面,也就是出现404错误代码时,跳转到我们自定义的网址上.下面记录下方法: 1.编 ...

  8. React组件间信息传递方式

    组件之间传递信息方式,总体可分为以下5种: 1.(父组件)向(子组件)传递信息 2.(父组件)向更深层的(子组件) 进行传递信息  >>利用(context) 3.(子组件)向(父组件)传 ...

  9. Linux配置IP和防火墙

    前言: 刚刚学完了怎么配置Linux IP和防火墙 前来总结. 准备: 需安装的: setup 正文: 安装基础包 yum groupinstall "Base" setup 选择 ...

  10. sql之分区域分段统计

    sql之分区域分段统计 需求:在一个表中,有两列分别标记行政区划代码和家庭成员人数,需要得到不同乡镇的家庭成员人数在1-2人,3-4人,5-6人,6人以上的家庭数的表格 思路: 用case when对 ...