Java开发人员应该知道的5种错误跟踪工具

 

错误线

随着Java生态系统的不断发展,可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具。 具有快速新部署的快速节奏环境需要跟踪错误并获得应用程序行为的洞察力,而传统方法无法维持这种水平。 在这篇文章中,我们决定收集其中的5种工具,看看它们如何与Java集成,并找出它们掌握了哪些技巧。 现在该粉碎一些错误了 。

射线枪

Mindscape的Raygun是基于Web的错误管理系统,可跟踪来自您应用程序的异常。 它支持各种桌面,移动和Web编程语言,包括Java,Scala,.NET,Python,PHP和JavaScript。 除此之外,还可以通过REST API向Raygun发送错误,并且由于开发人员社区的参与,更多的提供程序(它们称为语言和框架集成)得以实现。

Raygun屏幕截图

主要特点:

  • 错误分组–每次出现的错误都在一个组中呈现,可以访问该错误的单个实例,包括其堆栈跟踪。
  • 全文搜索–可搜索错误组和所有收集的数据。
  • 查看应用程序活动–对错误组的每项操作都会显示给您的所有团队,以供查看:状态更新,评论等。
  • 受影响的用户–每个错误都会显示受影响的用户数。
  • 外部集成– Github,Bitbucket,Asana,JIRA,HipChat等。

Java角度:要将Raygun与Java结合使用,如果您使用Maven或手动添加jar,则需要向pom.xml文件中添加一些依赖项。 第二步是添加一个UncaughtExceptionHandler,它将创建RaygunClient实例并将异常发送给它。 此外,您还可以将自定义数据字段添加到异常中,并将它们一起发送给Raygun。 完整的演练可在此处获得 。

幕后 花絮 认识Raygun认证的操作员Robie Robot 。 就像实际的射线枪一样。

在以下位置查看: https //raygun.io

哨兵

Sentry从一个附带项目开始,是一个基于开源 Web的解决方案,可作为实时事件记录和聚合平台。 它监视错误并显示错误发生的时间,地点和对象,并承诺不会完全依靠用户反馈来做到这一点。 支持的语言和框架包括Ruby,Python,JS,Java,Django,iOS,.NET等。

哨兵截屏1

主要特点:

  • 实时查看新部署的影响
  • 为因错误而中断的特定用户提供支持
  • 检测并阻止欺诈行为–通知有关购买,身份验证和其他敏感区域的异常失败数量
  • 外部集成– GitHub,HipChat,Heroku等

Java角度: Sentry的Java客户端称为Raven,它支持现有的主要日志记录框架,例如java.util.logging,Log4j,Log4j2和带有Slf4j的Logback。 还提供了将事件直接发送到Sentry的独立方法。 例如,要使用Logback设置Sentry for Java,您需要手动或通过Maven添加依赖项,然后添加新的Sentry附加程序配置,您就可以做到。 此处提供说明。

幕后花絮: Sentry是2010年在Disqus上的内部项目,用于解决Chris Jennings和David Cramer在Django应用程序上记录异常的问题

在以下位置查看: https //www.getsentry.com/

塔基皮

与大多数其他工具不同,Takipi远不只是堆栈跟踪修饰符。 它的构建考虑了一个简单的目标:告诉开发人员确切的时间和原因破坏生产代码。 每当引发新异常或发生日志错误时,Takipi都会捕获该异常,并在方法和机器之间向您显示导致该异常的变量状态。 Takipi会将其覆盖在错误发生时执行的实际代码上,因此您可以分析异常,就像发生异常时一样。

Takipi2

主要特点:

  • 检测-捕获/未捕获的异常,Http和记录的错误。
  • 优先排序–错误在群集中发生的频率,是否涉及新代码或修改后的代码以及错误率是否在不断提高。
  • 分析–即使在不同的机器和应用程序之间,也可以查看实际的代码和变量状态。
  • 易于安装–无需更改代码或配置。
  • 开销不到2%。

Java角度: Takipi是为Java和Scala中的生产环境而构建的。 安装过程不到1分钟,包括将Java代理附加到JVM。

在幕后:每种异常类型和错误都有一个代表它的独特怪兽。 你可以在这里找到这些怪物。

在以下位置查看: http //www.takipi.com/

气刹

刹车片截图

Rackspace的Airbrake是另一个使异常跟踪更为醒目的工具,其使命是“不再搜索日志文件”。 它为用户提供了基于Web的界面,其中包括带有错误详细信息的仪表板和特定于应用程序的视图。 支持的语言包括Ruby,PHP,Java,.NET,Python甚至是Swift。

主要特点:

  • 详细的堆栈跟踪,按错误类型,用户和环境变量分组
  • 团队生产力–从噪音中滤除重要度错误
  • 团队协作–查看谁造成了错误并由谁修复
  • 外部集成– HipChat,GitHub,JIRA,Pivotal和其他30多个

Java角度:虽然还提供了Logback库,但Airbrake官方仅支持Log4j。 当前缺少Log4j2支持。 安装过程类似于Sentry,手动或通过Maven添加一些依赖项,添加附加程序,您就可以开始了。 同样,AirbrakeNotice和AirbrakeNotifier也提供了直接向Airbrake发送消息的方法。 更多详细信息在这里 。

幕后花絮 Airbrake被Exceptional收购,然后被Rackspace 收购 。

在以下位置查看: https : //airbrake.io/

StackHunter

Stack Hunter当前处于测试版,提供了一个自托管工具来跟踪您的Java异常。 与过去托管工具相比,情况发生了变化。 除此之外,它的目的是提供类似的功能集,以告知开发人员其异常并帮助更快地解决它们。

StackHunter屏幕截图

主要特点:

  • 一个自托管的Web界面,可查看所有异常
  • 堆栈跟踪数据和上下文的收集,包括关键指标,例如总异常,唯一异常,受影响的用户和受影响的会话
  • 发生异常时的即时电子邮件警报
  • 按根本原因对异常进行分组

Java角度: StackHunter专为Java构建,可在任何运行Java 6或更高版本的servlet容器上运行。 安装包括在本地Servlet上运行StackHunter,配置用于警报的传出邮件服务器以及配置希望记录的应用程序。 完整说明可在此处获得 。

幕后花絮 StackHunter由Dele Taylor开发,他还致力于Data Pipeline –一种用于在Java中转换和迁移数据的工具。

在以下位置查看它: http : //stackhunter.com/

奖励:ABRT

值得一提的另一种错误跟踪方法是ABRT,它是来自Fedora生态系统的自动错误检测和报告工具,它是Red Hat赞助的社区项目。 与我们在此介绍的5种工具不同,该工具不仅旨在供应用程序开发人员使用,而且还应供其用户使用。 将错误报告给具有更丰富上下文的Red Hat,否则将很难理解和调试。

ABRT

Java角度:对Java异常的支持仍处于概念验证阶段。 由JakubFilák开发的Java连接器可在此处获得 。

幕后花絮 ABRT是Red Hat开发的一个开源项目。

在以下位置查看: https //github.com/abrt/abrt

我们还错过任何其他工具吗? 您如何跟踪例外情况? 请在下面的评论部分中告诉我

翻译自: https://www.javacodegeeks.com/2014/09/5-error-tracking-tools-java-developers-should-know.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Emacs中的Color Theme以及字体设置

先上一张效果图: Color Theme用的是gnome2, 字体用的是Visual Studio自带的Consolas。我使用的环境是WindowsCygwinEmacs23.2。 1,安装Color Theme插件 首先,从http://download.savannah.gnu.org/releases/color-theme/下载color theme 6.6.0版本。 接着…

JavaScript与 HTML表单的交互过程,想要学习动态网页但是无从下手的新手看看。...

最近开始了 java web的学习在学习中学到了很多有用的东西 比如说 html 表单如何 和 javascript进行交互的 读完本篇文章后相信初学者会有一个 清晰的理解 。。。 对应下面的代码看我写的问题 。 其实表单的交互操作很简单 就是在 提交表单数据的时候调用一个 javascrip…

问题记录之前端路由系统

概要: 公司的一个项目中使用了根据路由配置生成对应的Route,而配置会存在一份在store中,当store中的RouteConfig变化时,会根据最新的配置来生成最新的试图。 因为路由配置系统实现上的一些缺陷本次需要对其就行性能上的一些优化…

vue兼容ie10问题并且node——module中出现es6语法如何解决

一、首先进行安装babel-polyfill,如果你用yarn安装babel-polyfill的话需要yarn add babel-polyfill进行安装 二、在babel.config.js中加入 三、在ie浏览器中找到报错的文件,然后将文件加入其中 转载于:https://www.cnblogs.com/changhuanran/p/11193149.…

2个在Java中将Byte []数组转换为String的示例

将字节数组转换为String似乎很容易,但是很难做到正确。 每当字节转换为String或char时,许多程序员都会犯忽略字符编码的错误,反之亦然。 作为程序员,我们都知道计算机只能理解二进制数据,即0和1。我们看到和使用的所有…

Linux文件IO-例会笔记总结

上周日实验室例会主要涉及linux文件操作的内核实现。主要讨论了linux下对文件进行操作时,系统内部调用了那些函数以及它们是怎么相互配合的。 linux系统是怎样对不同介质和不同的文件系统提供统一的文件操作接口呢?答案是:VFS。系统中所有文件…

js算法初窥03(搜索及去重算法)

前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索。 1、顺序搜索 其实顺序搜索十分简单,我们还是以第一篇文章写好的架子作为基础&#…

nginx try_files流程解析

前端部署单页应用时在nginx上经常用到try_files指令,而对于try_files并不知道其所以然,所以花时间整理总结如下。 Syntax: try_files file … uri; try_files file … code; Default: — Context: server, location 根据root和alias指令提供的值按照tr…

javascript中编码与解码的decodeURI()、decodeURIComponent()区别

1、 定义和用法 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 从W3C的定义和用法来看,两者没有什么区别,但是两者的参数是有区别的:decodeU…

vb 类模拟 引用

引用:http://wenku.baidu.com/view/f434ea26a5e9856a56126008.html Class1中 Option Explicit Public Sub test() Form1.TextForIpAddressAdd.Text "123"End Sub Form1中 Option Explicit Private test As New Class1 Private Sub Form_Load() 初始化 te…

用js来实现那些数据结构12(散列表)

上一篇写了如何实现简单的Map结构,因为东西太少了不让上首页。好吧。。。 这一篇文章说一下散列表hashMap的实现。那么为什么要使用hashMap?hashMap又有什么优势呢?hashMap是如何检索数据的?我们一点一点的来解答。 在我们学习一门…

如何自定义Hibernate脏检查机制

介绍 在上一篇文章中,我描述了Hibernate自动脏检查机制。 尽管您应该始终喜欢它,但是有时您可能想添加自己的自定义污垢检测策略。 自定义脏检查策略 Hibernate提供以下定制机制: 休眠拦截器#findDirty() CustomEnt…

读vue【深入响应式系统】后整理

一直以来对vue的依赖自动追踪的原理很感兴趣,像魔法一样。对于交给vue的对象返回后,在哪里使用了这个返回的对象vue会自动追踪,等这个对象改变时vue会自动通知到之前使用改变量的方法,整个过程和react很不一样,react的…

萌新自我介绍

第一次用博客,多有不会,可能向各位大佬请教,谢谢!!!!转载于:https://www.cnblogs.com/fakerOrz/p/11194872.html

使用select一个表更新另一个表(批量更新)

update a set a2b.b2, a3b.b3, ... from b where a.a1b.b1 转载于:https://www.cnblogs.com/haver/articles/2244740.html

用js来实现那些数据结构06(队列)

其实队列跟栈有很多相似的地方,包括其中的一些方法和使用方式,只是队列使用了与栈完全不同的原则,栈是后进先出原则,而队列是先进先出(First In First Out)。 一、队列 队列是一种特殊的线性表&#xff0c…

探索SwitchYard 2.0.0.Alpha2快速入门

在我的最后一篇文章中,我解释了如何在WildFly 8.1上使用SwitchYard。 同时,该项目很忙,并发布了另一个Alpha2。 这是一个很好的机会,在这里浏览快速入门并刷新您的记忆。 除了版本更改之外,您仍然可以使用较早的博客来…

MySQL之触发器

二:触发器 1. 什么是触发器 触发器,是一段与某个表相关的sql语句,会在某个时间点,满足某个条件后自动触发执行 其中两个关键因素: 时间点 * 事件发生前,before|事件发生后 after事件 * update delete inser…

PowerDesigner使用技巧

PowerDesigner使用MySQL的auto_increment   ◇问题描述:   PD怎样能使主键id使用MySQL的auto_increment呢? ◇解决方法:    打开table properties窗口 → columns → 选中id列 → 打开columns properties窗口 → 勾选identity即可   …

走进webpack(1)--环境拆分及模块化

初级的文章和demo已经基本完成了,代码也已经上传到了我的github上,如果你对webpack的使用并不是十分了解,那么建议你回头看下走近系列,里面包括了当前项目中使用频繁的插件,loader的讲解。以及基本的webpack配置&#…