使用Exceptionless记录日志

第一部分:搭建本地Exceptionless环境

 

提前先下载好对应的程序包

 

第一步,安装JDK并配置环境变量

第二步,解压elasticsearch,进入bin目录,运行elasticsearch.bat。

 

第三步,解压 Exceptionless,  运行Start.bat。

 

 在执行Start.bat的时候,如果出现以下错误,请参考PowerShell设置

 

如果没有报错,会出现这个界面。

等待安装完成,会自动打开http://localhost:50000/这个页面。

在低版本的安装过程中,需要修改各种配置文件,在最新版本已经不需要手动去修改了,完全是傻瓜式安装。

到此为止,安装流程已经全部完成了。

 

 

第二部分:代码调用

 在登录页面创建好账号并登录,新建一个项目。

 

点击“Add Project”后,会引导选择使用的框架,然后会给出对应框架的使用语句。

 

在VS中创建一个新的测试项目,我这边的代码和平台给的示例稍微有点不同,我把配置写在了json文件中。

 

Startup类里面加上这两行代码,把服务注册到系统中。

 

最后在控制器里面调用对应的方法。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Exceptionless;
 6 using Exceptionless.Logging;
 7 using Microsoft.AspNetCore.Mvc;
 8 
 9 namespace ExceptionlessLogTest_V2.Controllers
10 {
11     [Route("api/[controller]")]
12     public class ValuesController : Controller
13     {
14         // GET api/values
15         [HttpGet]
16         public string Get()
17         {
18             ELogInfo("Get", $"logging-date:{DateTime.Now}");
19             try
20             {
21                 throw new Exception("Unable to create order from quote.");
22             }
23             catch (Exception ex)
24             {
25                 ELogError(ex, "err");
26             }
27 
28             return "执行完成";
29         }
30 
31 
32         public void ELogInfo(string source, string message, string tag = "")
33         {
34             if (string.IsNullOrEmpty(tag))
35             {
36                 ExceptionlessClient.Default.CreateLog(source, message, LogLevel.Info).Submit();
37             }
38             else
39             {
40                 ExceptionlessClient.Default.CreateLog(source, message, LogLevel.Info).AddTags(tag).Submit();
41             }
42         }
43 
44 
45         public void ELogError(Exception ex, string tag = "")
46         {
47             if (string.IsNullOrEmpty(tag))
48             {
49                 ExceptionlessClient.Default.SubmitException(ex);
50             }
51             else
52             {
53                 ExceptionlessClient.Default.CreateException(ex).SetProperty("ex", tag).Submit();
54             }
55         }
56 
57     }
58 }
View Code

 

更多的使用,请参考官方文档或者 savorboard的文章 

 

在调用了Get这个接口之后,对应的日志信息和异常信息已经记录到Exceptionless中了。最终效果如下:

  

 

参考链接:

http://www.cnblogs.com/liying0721/p/7027121.html#3738569

https://www.cnblogs.com/savorboard/p/exceptionless.html

转载于:https://www.cnblogs.com/jiao006/p/7652431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言在互联网时代,分布式应用、系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的这样的组件并不是 很多,并且没有一个通用的抽象组件能够将这些接口集成起来,今天就为大家介绍一款开源的组件库 Foundatio,他们同样出自于Exceptionless团队之手,下面就来看看吧。目录Foundatio 介绍Getting Started缓存队列锁消息工作任务文件存储度量日志示例程序源码总结Foundatio 介绍GitHub : https://github.com/exceptionless/FoundatioFoundatio 是一个插件式的,松耦合的一套构建分布式应用的程序库,出自于Exceptionless团队。Foundatio 同时支持 .NET Framework 4.6 和 .NET Core。通过 Foundatio 我可以获得哪些帮助呢?如果你是面对接口(抽象)构建的程序,你可以很容易的对接口实现进行切换。具有友好的依赖注入,还在使用 .Net Framework的朋友可以体验一下,它具有比Autofac,Unity等更简易的操作和更友好的接口。可以更加方便的使用缓存了,Foundatio帮助我们封装了很多缓存的客户端实现,比如RedisCache、InMemoryCache、ScopedCache等等。消息总线,你不必自己构建或者使用复杂且昂贵的NServiceBus了,很多时候我们仅仅需要的是一个可以在本地或者云上运行的简单的消息总线。存储,现在你可以很方便的通过一致的接口来使用分布式存储了,包括内存文件存储、文件夹文件存储,Azure文件存储,AWS S3文件存储。Foundatio 主要包含以下模块:缓存(Caching)队列(Queues)锁(Locks)消息(Messaging)工作任务(Jobs)文件存储(File Storage)度量(Metrics)日志(Logging)这些组件都以NuGet包的形式提供出来供我们很方便的使用,下面依次来看看每一个组件的用途和使用方法吧。Getting Started缓存缓存是一种空间换时间的技术,你可以通过缓存来快速的获取一些数据。Foundatio Cache 提供了一致的接口ICacheClient 来很容易的存储或者读取缓存数据,并且提供了4中不同的缓存客户端的实现。他们分别是:1、InMemoryCacheClient:内存缓存的实现,这种缓存的生命周期为当前进程, 有一个MaxItems属性,可以设置最多缓存多少条数据。2、HybridCacheClient:InMemoryCacheClient 具有相同的实现,但是此接口提供、IMessageBus 可以用来跨线程之间的同步。3、RedisCacheClient:一个 Redis 客户端的实现。4、RedisHybridCacheClient:一个RedisCacheClient 、InMemoryCacheClient 的混合实现,通过RedisMessageBus来保持内存缓存跨线程之间的同步。注意:如果本地缓存的项已经存在,在调用Redis进行序列化保存的时候可能会有性能问题。5、ScopedCacheClient:传入ICacheClient和scope,scope 可以设置一个字符串,来制定一个缓存键前缀,这样可以很方便的进行批量存储和删除。例子:using Foundatio.Caching; ICacheClient cache = new InMemoryCacheClient(); await cache.SetAsync("test", 1); var value = await cache.GetAsync("test");队列提供了一个先进,先出的消息管道,Foundatio 提供了一个IQueue接口,并且拥有 4 种不同的队列实现。1、InMemoryQueue:一个内存队列实现,队列的生命周期为当前进程。2、RedisQueue:一个 Redis 队列实现。3、AzureServiceBusQueue:一个基于Azure的服务消息队列实现。4、AzureStorageQueue:一个基于Azure的存储队列实现。例子:using Foundatio.Queues; IQueue queue = new InMemoryQueue();await queue.EnqueueAsync(new SimpleWorkItem {     Data = "Hello"});var
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值