我是3y,一年CRUD经验用十年的markdown程序员‍常年被誉为优质八股文选手 今天来聊些大家都用得上的东西:数据链路追踪.之前引入了系统的监控来快速定位应用操作系统上的问题,而业务问题呢?在这篇文章中你可以看到用注解的方式打印日志,也能看到简易版的全链路追踪是怎么实现的. 不多BB,开始吧 01.注解日志打印 日志的搭建我在austin最开始的前几篇已经有提及了,之前一直在等我的基友@蛮三刀酱他的日志组件库上传到Maven库,好让我使用使用下.在最近,他已经更新了两个版本,然后传到了Mav…
Idea2018中集成Tomcat9导致OutPut乱码找到tomcat的安装目录,打开logging.properties文件,增加一行代码,覆盖默认设置,将日志编码格式修改为GBK.java.util.logging.ConsoleHandler.encoding = GBK js代码 (function() { var CookieUtil = { // get the cookie of the key is name get : function(name) { var cookieN…
    因工作需要,采用JavaFx开发了一个windows窗口程序.在开发过程中,由于没有引入日志框架,只能自己手动在控制台打印些信息,给调试带来了很多麻烦:因此决定引入日志框架.由于之前接触的项目大部分都是javaWeb项目,web项目的日志输出已经难不倒我了.但普通java项目日志输出配置还是第一次接触,因此记录下整个过程,方便后续借鉴.     技术概述:采用Sl4j作为日志门面,Log4j2作为日志输出的具体实现:同时结合lombok插件,减少代码的书写. 一.相关Maven依赖  …
目录 一.预先判断日志级别 二.避免无效日志打印 三.区别对待错误日志 四.保证记录完整内容 打印日志,要注意下面4点. 一.预先判断日志级别 对DEBUG.INFO级别的日志,必须使用条件输出或者使用占位符的方式打印.该约定综合考虑了程序的运行效率和日志打印需求. 先来看一个反例: log.debug("输入参数信息id=" + id + ",obj=" + obj); 如果在某个配置了打印级别为WARN的应用中,按照上面代码打印DEBUG级别的日志,那么该日志不…
activity: package com.itheima.ccalljava; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog.Builder; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { static{ System.lo…
以下为<正确的打日志姿势>学习笔记. 什么时候打日志 1.程序出现问题,只能通过 debug 功能来定位问题,很大程度是日志没打好.良好的系统,通过日志就能进行问题定位. 2.if-else 或者 switch 这样的分支程序,需在分支首行打印日志,以便确定进入了哪个分支. 3.开发的功能核心,需确认可以通过日志看到整个流程. 日志基本格式 必需使用参数化信息 logger.debug("Processing trade with id:[{}] and symbol : [{}]…
为何要打印日志?让程序裸奔不是一件很快乐的事么? 有些BUG就像薛定谔的猫,具有波粒二象性,当你试图去观察它时它就消失了,当你不去观察它时,它又会出现.当你在测试人员面前赌咒发誓,亲自路演把程序跑一遍的时候,这些bug就会神奇的消失:一旦离开你的骚操作重新回到测试人员手中,这些bug又会突然的出现.这就是开发人员和测试人员互相对天发誓自证清白的尬聊场面. 因为这些幽灵Bug破坏了团队的氛围,伤害了开发和测试人员的感情,从而导致了产品质量下降. 因此非常有必要找到这些bug发生的原因. 试图找到这…
lombok 插件介绍: IntelliJ IDEA官方插件页面:https://plugins.jetbrains.com/plugin/6317-lombok-plugin 使用lombok之后,省去了许多没必要的get,set,toString,equals,hashCode代码,简化了代码编写,减少了代码量.另外@Data注解的作用相当于 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode的合集. I…
在 用SLF4j/Logback打印日志-1 和 用SLF4j/Logback打印日志-2 中分别介绍了Logback记录日志的基本原理并重点介绍了输出源配置.本篇介绍一些性能和技巧性的东西. 性能 在查看线上业务代码的时候有时候会发现类似这样的代码: logger.debug("This " + this + " and " + that); 在对性能有要求的系统中,这种写法是非常不利的,虽然在配置线上系统的时候不会打印 DEBUG 级别的日志,但是在进入函数之前…
Java动态,安全追踪工具 在我们日常的开发中,总是难以避免的要解决线上的问题.如果线上的问题我们在本地调试的时候无论调试多少次发现明明本地调用了这个方法呀,怎么线上就是没调呢?还有就是出了问题的时候由于没有打日志,所以不得不去价格logger,然后换个包,然后再重启,然后再调用,如果在用户很多的时候这么搞,无疑面临着巨大的风险,还不得不去处理用户的大量的投诉,在领导面前也只能默默的低着头承受着批评 那么有没有一种方法可以不用重启应用,又可以在线上追踪代码呢? 答案当然是有的,就是使用Btrac…