哈尔滨公司建站模板,wordpress 图床 插件,网络营销模式的建议,自我介绍网页模板代码服务器日志记录在最近的时间里#xff0c;我们已经看到了许多工具可以帮助您理解日志。 开源项目#xff08;例如Scribe和LogStash#xff09;#xff0c;内部部署工具#xff08;例如Splunk#xff09;以及托管服务#xff08;例如SumoLogic和PaperTrail#xff09;。… 服务器日志记录 在最近的时间里我们已经看到了许多工具可以帮助您理解日志。 开源项目例如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服务HttpDB文件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个功能可以在下次调试服务器时使您的生活更轻松 服务器调试 。 当Takipi在JVM中检测到异常或错误时它将收集引起该异常的代码和变量。 最终结果是对于应用程序中的每个错误您都可以直接跳入在该计算机上执行的源代码并查看引起该错误的所有变量值–当前的局部变量对象数组和字符串错误。 日志集成。 Takipi会为每个日志错误自动添加一个微小的调试超链接因此您可以使用它直接跳转到导致该错误的实际源代码和变量值中。 分布式调试 。 如果调用失败的代码是从另一台运行Takipi的计算机上进行的则您将在分布式调用链中看到源代码和变量值。 因此如果机器A调用B而机器C调用失败则您将看到之间的整个链的代码和变量。 单击此处尝试塔基皮 翻译自: https://www.javacodegeeks.com/2014/03/5-techniques-to-improve-your-server-logging.html服务器日志记录