服务器日志记录

在最近的时间里,我们已经看到了许多工具可以帮助您理解日志。 开源项目(例如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. 如何检测服务器运行正常运行,一种检测服务器运行状态的方法、装置和系统专利_专利查询 - 天眼查...

    1. 一种检测服务器运行状态的方法,其特征在于,应用于客户端,所述客户端本地保存 有正常服务器信息表和故障服务器信息表;所述正常服务器信息表中存储有当前处于正常 状态的各服务器的标识信息,所述故障服务 ...

  2. 5种改善服务器日志记录的技术

    在最近的时间里,我们已经看到了许多工具可以帮助您理解日志. 诸如Scribe和LogStash之类的开源项目,诸如Splunk之类的本地工具以及诸如SumoLogic和PaperTrail之类的托管服 ...

  3. centos6配置日志外发_CentOS6下记录后台操作日志的两种方式

    CentOS6下记录后台操作日志的两种方式 平时为了记录登录CentOS Linux系统的操作命令,需要将操作日志记录下来,下面介绍两种方式 1.利用script以及scriptreplay工具 sc ...

  4. 如何查看2012服务器登录日志文件,怎样查看2012服务器远程过记录

    怎样查看2012服务器远程过记录 内容精选 换一换 添加二级域名解析的流程与普通的方式相同,仅需要保证主机记录不为空即可.现以公网域名example.com为例,说明为二级子域名123.example ...

  5. linux系统服务器怎么登录日志文件,Linux服务器查看日志的几种方法

    Linux服务器查看日志的几种方法 1.进入文件所在件目录,比 cd /opt/tomcat7/logs 2.命令日志,分析需求场景打开需要的日志 比如: tail  -f   catalina.ou ...

  6. linux日志切割命令,Linux 服务器log日志切割三种方法【附命令行】

    今天爱分享给大家带来Linux 服务器log日志切割方法[三种附命令行],希望能够帮助到大家. 业务服务器上产生了一个 10G 的log文件,然后很悲催的是什么样的文本编辑器都打不开,然后只能切分一下 ...

  7. 文件服务器导出共享文件列表,服务器共享文件访问记录方法、共享文件操作日志记录功能实现...

    现在很多单位都有共享文件服务器,经常会在文件共享服务器上存储单位一些重要的共享文件,让局域网用户访问使用,为了保护共享文件的安全,管理员常常需要设置共享文件访问权限,同时还需要记录共享文件访问日志,如 ...

  8. 怎么查看访问网站服务器记录,如何快速分析网站服务器日志

    原标题:如何快速分析网站服务器日志 服务器日志是一个文本,类似txt文本,是服务器自己生成的,也称为网站日志.通常Windows服务器的日志叫做Apache日志,Linux服务器日志称为IIS日志. ...

  9. windows服务器系统的iis日志,Windows server2012 IIs 8 自定义日志记录

    问题: 通过CDN加速的网站,记录日志时无法追踪源IP,日志的IP都为CDN节点ip. 分析: 1.在解析记录header时,CDN实际会把源IP以其它header的形式回传,如网宿为[Cdn-Src ...

最新文章

  1. 第四讲 deque
  2. 特征值 奇异值分解 概念整理
  3. 搭建基础架构-Page
  4. aes加密算法_令你的文件安全有了新方法AES-256-GCM加密网站免费用
  5. 如何腾出计算机内存,教你如何正确腾出手机内存,尤其是生活在易门的你,必学!...
  6. Gprmax 三维地质雷达建模及在 paraview 中的可视化
  7. 浅析python中的main函数_浅的意思
  8. plsql 存储过程 测试
  9. 数字图像处理复习记录(二)邻接、连通和形态学处理
  10. starup_stm32f10x_hd.s的作用
  11. 综合评价指标权重方法汇总
  12. fgo升级经验计算机,命运冠位指定狗粮本每日经验表 fgo国服狗粮本刷取技巧攻略[多图]...
  13. 单元測试中 Right-BICEP 和 CORRECT
  14. 计算机win10分区软件,简单易用的win10分区软件:分区助手
  15. 韩泰机器人_韩泰轮胎怎么样?进击的韩泰,拥有着对未来无限的可能!
  16. btcTrade_project
  17. python抓取酷我MV
  18. 【渝粤题库】广东开放大学 高级商务办公软件应用 形成性考核
  19. 华为AC旁路二层组网直接转发示例
  20. Profiler Others占用时间过高的解决方法

热门文章

  1. 2021牛客暑期多校训练营4 H-Convolution(数学)
  2. codeforces280 C. Game on Tree(期望)
  3. 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?
  4. 阿里巴巴对Java编程【命名风格】的规约
  5. java生成UUID通用唯一识别码
  6. H5的Websocket基本使用
  7. 关于人脸识别最近浏览器打不开摄像头的解决方案
  8. JavaScript实现四则运算
  9. android拦截短信获取短信内容,《英雄联盟手游》先锋测试招募说明:仅安卓用户...
  10. 微信小程序父级之间的传值_微信小程序自定义组件封装及父子间组件传值的方法...