在最近的时间里,我们已经看到了许多工具可以帮助您理解日志。 诸如Scribe和LogStash之类的开源项目,诸如Splunk之类的本地工具以及诸如SumoLogic和PaperTrail之类的托管服务。 这些都可以帮助您将大量日志数据减少为更有意义的内容。

它们共有一个共同点。 它们都取决于您实际放入日志中的数据。 正确地获取数据质量和数量的任务就落在了您身上。 考虑到这一点,在记录日志时,您应该经常注意以下五件事:

1.您好我的(线程)名称是..

Thread name属性是Java最被低估的方法之一,因为它主要是描述性的。 它发挥最大作用的地方是多线程日志记录。 大多数日志记录框架将自动记录当前线程的名称。 但是,它的外观通常类似于“ http-nio-8080-exec-3”-由线程池或容器分配的名称。

线程名称在您的日志中是主要房地产,因此您需要确保正确使用它。 这意味着为它分配详细的上下文,例如Servlet或立即完成的任务,以及一些动态上下文,例如用户或消息ID。

因此,代码的入口应以类似以下内容的开头:

Thread.currentThread().setName(MyTask.class.getName() + “: “+ message.getID());

2.分布式标识符

在SOA或消息驱动的体系结构中,任务或请求的执行可能跨越多台机器。 当处理一个失败时,连接机器之间的点及其状态将是了解发生了什么的关键。

为了使日志分析器能够在计算机上对相关日志消息进行分组,您需要为它们提供唯一的ID,以此作为每个日志消息的一部分。 这意味着,系统中的每个入站操作都应具有唯一的ID,该ID随其一起运行直到完成。

诸如用户ID之类的永久性标识符可能不是很好的工具,因为一个用户可能对他进行了多项操作,这将使隔离更加困难。 UUID(尽管很长)在这里是一个不错的选择,也可以加载到线程名称或专用TLS中。

不要记录+循环。

通常,您会看到一段代码在紧密的循环中运行并执行日志操作。 基本假设是该代码将运行有限的次数。

事情进行得很好时,可能就是这种情况。 但是,当代码意外输入时,循环可能不会中断 。 在这种情况下,您不仅要处理无限循环,还要处理将无限数量的数据写入磁盘或网络的代码。

留给自己的设备,这可能会使服务器或整个群集停机。

如有可能,请勿在紧密循环中记录。 捕获错误时尤其如此。

void readData {while (hasNext()) {try {readData();}catch (Exception e) {// this isn’t recommend - you can catch, but log outside the looplogger.error("error reading " X + " from " Y, e);}}
}

4.空手

韦斯特罗斯(Westeros)将长城作为其最后一道防线(可以帮助他们的肥胖食品)。 您有Thread.uncaughtExcceptionHandlers 。 因此,请确保使用它们。 如果您不安装这样的处理程序,则可能会冒着将上下文抛出异常的风险,而上下文却很少,并且对是否以及在何处最终记录它们的控制也很少。

请注意,即使在未捕获的异常处理程序中,该处理程序也无法访问终止线程中的变量,您仍然可以获得对Thread对象的引用。 如果您坚持第1步,您仍然会获得有意义的线索。 getName ()日志可为您提供更多上下文。

5.接听外部电话

每当您进行离开JVM的API调用时,发生异常的机会都会大大增加。 这包括Web服务,Http,DB,文件,OS或任何其他JNI调用。 对待每个呼叫,就好像它会爆炸一样(最有可能在某一时刻发生)。

在大多数情况下,API调用失败的原因与您提供给他们的意外输入有关。 在日志中为您提供这些值是解决此问题的关键部分。

try {return s3client.generatePresignedUrl(request);
}
catch (Exception e) {String err = String.format("Error generating request: %s bucket: %s key: %s. method: %s", request, bucket, path, method);log.error(err, e); //you can also throw a nested exception here with err instead.
}

使用Takipi进行服务器调试

Takipi旨在通过使您的日志更智能,信息更丰富来使服务器调试更好。 以下3个功能可以在下次调试服务器时使您的生活更轻松:

  1. 服务器调试 。 当Takipi在JVM中检测到异常或错误时,它将收集引起该异常的代码和变量。 最终结果是,对于应用程序中的每个错误,您都可以直接跳入在该计算机上执行的源代码,并查看引起该错误的所有变量值–当前的局部变量,对象,数组和字符串错误。

  2. 日志集成。 Takipi会为每个日志错误自动添加一个微小的调试超链接,因此您可以用来直接跳到引起该错误的实际源代码和变量值。

  3. 分布式调试 。 如果调用失败的代码是从另一台运行Takipi的计算机上进行的,则您将在分布式调用链中看到源代码和变量值。 因此,如果机器A调用B,而机器C调用失败,则您将看到之间的整个链的代码和变量。

单击此处尝试塔基皮

翻译自: https://www.javacodegeeks.com/2014/03/5-techniques-to-improve-your-server-logging.html

5种改善服务器日志记录的技术相关推荐

  1. 服务器日志记录_5种改善服务器日志记录的技术

    服务器日志记录 在最近的时间里,我们已经看到了许多工具可以帮助您理解日志. 开源项目(例如Scribe和LogStash),内部部署工具(例如Splunk)以及托管服务(例如SumoLogic和Pap ...

  2. cloudwatch监控_Amazon CloudWatch:无服务器日志记录和监控基础

    cloudwatch监控 Amazon CloudWatch is a monitoring and management service built for developers, system o ...

  3. 三种方式实现日志记录

    对于日志和事件的记录在每个项目中都会用到,如果在每个manager层中触发时间记录的话,会比较难以扩展和维护,所以可配置的日 志和事件记录在项目中会用到! 一.拦截器实现日志记录 (一)首先配置一个自 ...

  4. 如何通过7个Logback调整立即改善Java日志记录

    基准测试可帮助您发现Logback在压力下的性能 日志记录对于服务器端应用程序是必不可少的,但这是有代价的. 令人惊讶的是,微小的更改和配置调整对应用程序的日志记录吞吐量有多大影响. 在这篇文章中,我 ...

  5. weblogic服务器日志记录说明

    应用domain下找到AdminServer\logs\AdminServer.log ####<May 2, 2007 2:42:36 PM EDT> <Notice> &l ...

  6. web站点服务器日志管理及分析

    管理Web网站不只是监视Web的速度和Web的内容传送.它不仅要关注服务器每天的吞吐量,还要了解这些Web网站的外来访问,了解网站各页面的访问情况.根据各页面的点击频率来改善网页的内容和质量,提高内容 ...

  7. 服务器日志法网站分析的原理及优缺点

    [前言] 应朋友们的要求,我还是写一篇关于服务器日志法进行网站分析的原理以及它的优缺点是什么.请朋友们注意,网站服务器日志法并不容易进行,初学者,以及在绝大多数情况下,进行以用户行为分析为核心的网站分 ...

  8. web服务器日志分析

    转自: Web服务器日志统计分析完全解决方案 管理Web网站不只是监视Web的速度和Web的内容传送,它要求不仅仅关注服务器每天的吞吐量,还要了解对这些Web网站的外来访问,了解网站各页面的访问情况, ...

  9. qt 历史记录控件_基于Qt图形界面软件的操作日志记录方法及系统_2015106293015_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本发明涉及一种软件系统的日志记录技术,特别涉及一种基于Qt图形界面软件的操作日志记录方法及系统. 背景技术 软件操作日志是记录用户在使用软件的过程中,通过鼠标和键盘在操作界面上执行的点击和输 ...

最新文章

  1. java 配置及Eclipse安装
  2. SAP S4HANA 介绍LTMC的文章链接
  3. 超级节点根据自身的能力参与维基链生态建设
  4. Linux命令(27):shell 结合expect,多服务器批量分发数据
  5. spring 学习总结
  6. 《数据库SQL实战》查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
  7. OpenGL的glScissor示例程序
  8. MTV: Django眼中的MVC
  9. 推荐:.Net 5开源免费的内容管理系统
  10. B - 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
  11. java type 简书_Java中的Type详解
  12. MVC数据验证Model Validation
  13. 高通模式9008模式linux,学会小米9008高通模式_原来刷机如此简单
  14. 德语翻译-德语在线批量翻译软件
  15. Visualizing and understanding -- 论文阅读笔记
  16. Cyclone IV代FPGA的可编程逻辑资源
  17. 从程序员到项目经理(10):程序员加油站 --要执着但不要固执【转载】
  18. JQuery 下载和使用
  19. POJ 1606 Jugs
  20. 使用calibre给电子书生成目录

热门文章

  1. android微信分享之视频、URL地址、表情分享
  2. 安装docker遇到的坑 Could not resolve host: download.docker.com;
  3. 分数优先遵循志愿php源码_分数优先 遵循志愿
  4. eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法
  5. java ee的小程序_扩展Java EE应用程序的基础
  6. java jigsaw_Java 9和Project Jigsaw如何破坏您的代码
  7. hystrix应用 博客_用Hystrix保护您的应用程序
  8. Java中的PriorityBlockingQueue
  9. 在Gradle中为JPMS构建Java 6-8库
  10. JavaFX技巧29:使布局忽略不可见的节点