首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

日志打印的正确姿势!

使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。...实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。...当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式...不同级别的使用 ERROR: 基本概念 影响到程序正常运行、当前请求正常运行的异常情况: 打开配置文件失败 所有第三方对接的异常(包括第三方返回错误码) 所有影响功能使用的异常,包括:SQLException...: 有容错机制的时候出现的错误情况 找不到配置文件,但是系统能自动创建配置文件 即将接近临界值的时候,例如: 缓存池占用达到警告线 业务异常的记录,比如: 当接口抛出业务异常时,应该记录此异常 INFO

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    打印日志的正确姿势和最佳实践!

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进!...,着实很痛苦,而且 debug 的正确方式是优先使用日志,而不是一来就开 IDE 做 debug,这样的效率会很低,另外,生产上不可能给你这么玩; 如果是全局配置最好还是 debug 吧,以 logback...> 可以全局输出为 info,把需要的包设置成 debug,相当于只看我需要的包下的 debug 信息,其它包的日志为 info 级别,比如我只想看自己项目包中的 debug 信息如 me.ele.ebu...,可能还会导致高 cpu 和高 io; 正确的打法是:log 的占位符号 + 合理利用对象的 toString(当然需要重写 toString,可以使用生成工具或是 lombok@data 注解)或是先判断是否是对应日志级别再打...,比起开发环境,生产环境的日志就是取舍重要日志的过程。

    91430

    别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!

    使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题...,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。...当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式...: 有容错机制的时候出现的错误情况 找不到配置文件,但是系统能自动创建配置文件 即将接近临界值的时候,例如: 缓存池占用达到警告线 业务异常的记录,比如: 当接口抛出业务异常时,应该记录此异常 INFO...: 基本概念 系统运行信息 Service方法中对于系统/业务状态的变更 主要逻辑中的分步骤 外部接口部分 客户端请求参数(REST/WS) 调用第三方时的调用参数和调用结果 说明 1.

    1K40

    别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!

    ---- 西格玛的博客 http://t.cn/E9BkD7a 使用 slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一 实现方式统一使用: Logback 框架 打日志的正确方式...什么时候应该打日志 当你遇到问题的时候,只能通过 debug 功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。...当你碰到 if…else 或者 switch 这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式...: 有容错机制的时候出现的错误情况 找不到配置文件,但是系统能自动创建配置文件 即将接近临界值的时候,例如: 缓存池占用达到警告线 业务异常的记录, 比如: 当接口抛出业务异常时,应该记录此异常 INFO...: 基本概念 系统运行信息 Service 方法中对于系统 / 业务状态的变更 主要逻辑中的分步骤 外部接口部分 客户端请求参数 (REST/WS) 调用第三方时的调用参数和调用结果 说明 1.

    41230

    Java `ArrayList.remove()`的三种错误用法以及六种正确用法详解

    Java ArrayList.remove()的三种错误用法以及六种正确用法详解 摘要 在Java开发中,ArrayList 是使用最广泛的集合类之一。...无论是添加、修改还是删除元素,remove() 方法的正确使用都至关重要。然而,这个方法也容易引发各种意想不到的错误。...本篇博客将以通俗易懂的方式为你讲解 ArrayList.remove() 的 三种错误用法 和 六种正确用法,帮助你从小白变身为 ArrayList 使用达人。 引言 为什么选择ArrayList?...正确用法:六种实践中可靠的使用方法。 代码示例:通过可运行的代码帮助理解。 总结与参考:快速回顾与学习资料推荐。...通过熟悉 ArrayList.remove() 的正确使用方法,你可以更高效地操作集合,避免常见错误。 参考资料 Java 官方文档 - ArrayList 菜鸟教程 - Java ArrayList

    35510

    在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!

    原因四:算法不正确导致。 改进措施:首先将算法从应用中分离出来。...改进措施:在启动应用或启动相应配置时, 检测所有的配置项, 打印相应的INFO日志, 确保所有配置都加载成功。 原因十:业务不熟悉导致的错误。...比如同步串行方式会有性能、响应慢的问题, 而并发异步方式可以解决性能、响应慢的问题, 但会带来安全、正确性的隐患。异步方式会导致编程模型的改变, 新增异步消息推送和接收等新的问题。...系统出现的常见错误: 实体在数据库中的记录不存在, 必须指明是哪个实体或实体标识; 实体配置不正确, 必须指明是哪个配置有问题,正确的配置应该是什么; 实体资源不满足条件, 必须指明当前资源是什么,资源要求是什么...info 用于打印程序应该出现的正常状态信息, 便于追踪定位; warn 表明系统出现轻微的不合理但不影响运行和使用; error 表明出现了系统错误和异常,无法正常完成目标操作。

    1.6K50

    与阿里前P9的一次近距离互动,程序员职场晋升的正确姿势!

    当一项能力无法用明确的、可衡量的标准去评估的时候,就会出现“一千个人眼中有一千个哈姆雷特”的现象。很不幸的是,职级能力要求就属于这种情况。...,以便帮你找到正确的发力点,顺利通过晋升,获得更好的职业发展。...直播时间:2022.10.24 20:00 直播主题:程序员职场晋升直播课——与阿里前P9的一次近距离互动 直播地址获取:扫描上方海报上的二维码预约,开播提醒不迷路!...我从一个普通的程序员逐步晋升到了阿里的P9,而且所有的晋升都是一次通过的,所以我的晋升技巧是经过实践验证的。 其次,我也做过“教练”。...“理解晋升→准备晋升→参与晋升→获得晋升”这条完整的晋升链条,深入剖析了晋升背后的规则、“潜规则”、技巧和套路,帮助读者找到正确的发力点,顺利通过晋升,获得更好的职业发展。

    44910

    用C# (.NET Core) 实现迭代器设计模式

    服务员还有可能有这些需求: 打印菜单, 打印早餐菜单, 打印午餐菜单, 打印素食菜单, 判断某个菜是否是素食的. 首先我们尝试一下如何实现打印菜单: 1....调用两个菜单上面的getMenuItem()方法来获取各自的菜单项, 由于它们的菜单不同, 所以需要写两段代码: 2. 打印两个菜单的菜单项, 同样也是两套代码: 3....我们已经知道, 要把变化的部分封装起来. 什么是变化的部分? 由于不同对象集合引起的遍历操作. 那我们试试; 1. 想要遍历早餐项, 我们使用ArrayList的size()和get()方法: 2....Price} -- "); Console.WriteLine($"{menuItem?....使用java内置的Iterator来实现 由于PancakeHouseMenu使用的是ArrayList, 而ArrayList已经实现了该接口, 那么:这样简单改一下就可以: 针对DinerMe菜单,

    78150

    使用C# (.NET Core) 实现迭代器设计模式 (Iterator Pattern)

    服务员还有可能有这些需求: 打印菜单, 打印早餐菜单, 打印午餐菜单, 打印素食菜单, 判断某个菜是否是素食的. 首先我们尝试一下如何实现打印菜单: 1....调用两个菜单上面的getMenuItem()方法来获取各自的菜单项, 由于它们的菜单不同, 所以需要写两段代码: 2. 打印两个菜单的菜单项, 同样也是两套代码: 3....想要遍历早餐项, 我们使用ArrayList的size()和get()方法: 2. 想要遍历午餐项, 我们需要使用Array的length成员变量以及通过索引访问数组: 3....Price} -- "); Console.WriteLine($"{menuItem?....使用java内置的Iterator来实现 由于PancakeHouseMenu使用的是ArrayList, 而ArrayList已经实现了该接口, 那么:这样简单改一下就可以: 针对DinerMe菜单

    58430

    编写高质量代码改善C#程序的157个建议

    本文主要学习记录以下内容:   建议20、使用泛型集合来替代非泛型集合   建议21、选择正确的集合   建议22、确保集合的线性安全 建议20、使用泛型集合来替代非泛型集合 http://www.cnblogs.com...static void TestArrayList() { ArrayList arrayList = new ArrayList();...建议21、选择正确的集合 http://www.cnblogs.com/aehyok/p/3643928.html这里有一篇我刚写的关于集合的博文,主要是简单介绍了一下关于自己使用比较频繁的几个集合。...像使用数组、ArrayList、List、Dictionary这些集合的有点就是插入和删除数据效率比较高,缺点就是查找的效率相对来说低一些。...如果上面的集合用ArrayList代替,保证线程安全则应该在迭代和删除的时候都加上锁lock,代码如下所示: static ArrayList list = new ArrayList(

    54241

    编写高质量代码改善C#程序的157个建议

    本文主要学习记录以下内容:   建议20、使用泛型集合来替代非泛型集合   建议21、选择正确的集合   建议22、确保集合的线性安全 建议20、使用泛型集合来替代非泛型集合 http://www.cnblogs.com...static void TestArrayList() { ArrayList arrayList = new ArrayList();...建议21、选择正确的集合 http://www.cnblogs.com/aehyok/p/3643928.html这里有一篇我刚写的关于集合的博文,主要是简单介绍了一下关于自己使用比较频繁的几个集合。...像使用数组、ArrayList、List、Dictionary这些集合的有点就是插入和删除数据效率比较高,缺点就是查找的效率相对来说低一些。...如果上面的集合用ArrayList代替,保证线程安全则应该在迭代和删除的时候都加上锁lock,代码如下所示: static ArrayList list = new ArrayList(

    45420

    C#堆栈和队列

    Clear方法调用ArrayList类中的同名方法....myArray赋值后, 之前的赋值就都没意义了, 因为数组对象被直接替换了 //此处依然保留上方的赋值操作, 是为了对比打印结果更好的理解这里 myArray = myStack.ToArray...在操作顺利执行的同时把每一个数字压入堆栈, 这是因为在操作结束的时候, 被转换的数字可以按照正确的顺序排列....不同于后进先出的堆栈, 在这些队伍内的第一个人应该最先出去(FIFO). 另外一个实例就是发送给网络(或本地)打印机的打印任务列表. 打印机应该首先处理最先发送的任务....当需要往队列中插入数据项时, ArrayList的Add方法会把数据项新增在末尾. 当需要从队列中移除数据项时, 使用ArrayList的RemoveAt方法移除第一个元素.

    1.2K30
    领券