首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何打印日志

    如何打印日志 日志打印对研发来说,是很有必要, 如何打印日志,让日志能反映出处理流程,让日志能反映出问题所在,这个很重要,不好日志,会加大研发排查问题难度,过多日志也会对研发造成干扰,如何打印日志...日志存在问题 安全问题 将用户敏感信息打印在了日志日志级别不合理 warning日志较为泛滥,且少有人关注 部分阻塞业务流程错误,未正确使用error日志 错误日志重复打印 同一个错误在不同位置重复打印...,引发安全事故 提升系统性能 错误日志打印方法可能会造成系统性能下降 了解系统运行状态 合理日志打印可以帮助研发先于用户甚至QA发现问题。...除外) 【建议】谨慎使用日志进行打点 合理分级 【强制】日志打印时应选择合适级别 保证安全 【强制】原则上禁止日志汇总禁止打印用户L4级别的日志 【强制】日志打印满足飞书日志打印安全规范 【建议】使用合适脱敏方式对敏感信息进行脱敏...MQ消息唯一标记MsgID 案例二:日志打印时未传入ctx导致日志缺乏logID,无法通过logID检索到该日志 案例三:在程序关键分岔点未打印日志 案例四:在特殊条件分岔未打印日志 【强制】关键日志必须打印路径

    48920

    日志打印正确姿势!

    使用slf4j 使用门面模式日志框架,有利于维护和各个类日志处理方式统一。...实现方式统一使用: Logback框架 打日志正确方式 什么时候应该打日志 当你遇到问题时候,只能通过debug功能来确定问题,你应该考虑打日志,良好系统,是可以通过日志进行问题定为。...当你碰到if…else 或者 switch这样分支时,要在分支首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息方式...: log.error("获取用户[{}]用户信息时出错",userName,e); 说明 如果进行了抛出异常操作,请不要记录error日志,由最终处理方进行处理: 反例(不要这么做): try{...,需要进行日志打点,以及埋点记录,比如电商系统中下订单逻辑,以及OrderAction操作(业务状态变更)。

    1.7K20

    聊聊日志打印日志审计

    二.日志切面 ​ springboot中默认提供日志打印功能无法打印函数入参与出参信息。现在如果有个bug在生产环境可以复现,测试环境怎么也复现不了,本地代码又无法连接生产环境进行调试。...生产环境一般一般情况下指挥打印info级别的日志。这个时候就头疼了,无法定位解决问题。 ​ 因此线上环境能有一个功能帮我们打印函数详细入参或者出参这个功能是很重要。...当然这个功能默认情况下还是不要开启,毕竟大多数线上环境调用链封装比较深,出参与入参信息打印会比较多,对于日志存储会是一个比较大问题。...2.1.源码及说明 /** * 详细日志切面 * * 【默认情况下建议不要开启,开发测试定位问题时候可以打开,打开就变成了硬盘事儿都不叫事儿,爆炸打印】 * @author baiyan...>[] excludeReturnClass; //不进行日志打印类 private static final Class<?

    2.3K10

    关于日志打印几点建议

    日志打印在软件开发过程中必不可少,一般分为两个大类: 1、操作日志 2、系统日志 操作日志,主要针对是用户,例如在Photoshop软件中会记录自己操作步骤,便于用户自己查看。...我将针对这几个方面对系统日志打印做一个简要总结。...WHERE 1.程序入口 在入口打印日志是因为这个时候传递进来参数没有经过任何处理,将它打印日志文件中能一眼就知道程序原始数据是否符合我们预期,是不是传递进来原始数据就出现 问题。...首先明确日志级别中优先级是什么意思,在你系统中如果开启了某一级别的日志后,就不会打印比它级别低日志。...以上就是对日志打印几点建议,说不全面,抛砖引玉。

    97840

    如何打印日志

    1.选择恰当日志级别 error warn info debug 2.日志打印出参入参数 方便甩锅 3.选择合适日志格式 时间戳 线程名字 日志级别等 4.if-else ,switch 等分支语句都建议打印日志...,方便排查 5.对一些比较低日志级别进行判断,使用log.isXXXX()方法判断 如果日志不被记录,但是日志字符拼接,对象toString方法也会执行,浪费性能 6.不建议直接使用log4j...,logback等日志系统,建议使用slf4j框架,方便统一处理 7.建议使用参数占位符{},而不是+拼接,简洁且提升性能 8.建议使用异步日志,能有效提升IO性能 9.不要使用e.printStackTrace...()打印错误信息,因为太多信息,且是堆栈信息,会使得内存溢出 10.异常不要只打一半,要完成输出 11.禁止在线上开启debug 会把磁盘打满 12.不要记录了异常,又抛出异常 13.避免重复打印日志...,浪费磁盘空间 14.日志文件分离,不同级别日志存放在不同文件中 15.核心功能模块,建议打印详细日志

    11310

    组件日志单独打印

    那么多组件对MQ、Redis、鉴权等封装着,每个组件都需要打印日志,组件日志与业务日志混合在一起,干扰业务排查问题。组件日志主要是为了排查问题,组件打印日志也没有必要被收集到SLS、ELK上等。...主要解决两个问题: 组件日志需要单独打印 需要兼容项目项目里面的Log2j.xml配置文件,不和业务项目日志文件冲突 这里会有同学说,我在配置一个logj2文件,其实是不行。...一个可能用例可能是,您希望允许使用XML进行灵活配置,但同时确保始终存在一些无法删除业务配置元素。...log4j2初始化配置时候,加入自己单独配置,兼容业务配置,而且对业务无感。...本解决思路比较简单,但收益巨大,避免干扰业务日志,减少存储成本。

    12310

    MySQL打印死锁日志

    这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,有时候处理起来毫无头绪,一般只能从死锁日志下手。本篇文章我们一起来看下 MySQL 死锁日志。...1.手动打印死锁日志 当业务发生死锁时,首先是线上错误日志报警发现死锁异常,也会提示一些堆栈信息,然后会反馈到数据库层面进行排查。...我们一般会在命令行执行 show engine innodb status\G 来输出死锁日志,\G 作用是将查询到结果,每行显示一个字段和字段值,方便查看。...) #表示事务2被回滚 从死锁日志中可以看到关联两个事务相关信息,当一个事务持有了其他事务需要锁,同时又想获得其他事务持有的锁时,等待关系上就会产生循环,Innodb 不会显示所有持有和等待锁,但死锁日志也显示了相关信息来帮你确定...不过这会导致错误日志暴增,一般不建议开启这两个参数。 总结: 本篇文章介绍了 MySQL 死锁日志获取方法,发生死锁后,可以根据死锁日志还获取相关信息。

    1.5K10

    Flutter - 打印好用Debug日志

    一、思考 做 iOS 开发时这个功能很常用, 在 OC 和 Swift 中都可以很轻松实现,因为系统本来就提供了用于日志输出预处理宏,只要我们拿来拼接就可以了,但是在 Dart 中并不提供这些,那有什么办法实现它呢...我们回想在开发过程中,是不是发现只要一不小心抛异常,就可以看到类似如下打印内容,而且还能清楚知道异常是在哪个文件和哪一行代码造成。 ?...二、实践 在 dart:core 中提供了 堆栈跟踪(StackTrace),可以通过 StackTrace.current 取到当前堆栈信息,打印如下图所示,会发现这不好拿到我们想要信息。 ?...flutterlog/main.dart 所在行 55 所在列 23 三、呈上代码 下面我做了一点封装,直接拿走即可使用,打印效果如下所示: 完整代码和示例请到GitHub上【查看】。...打印效果 代码: // log.dart enum FLogMode { debug, // ? DEBUG warning, // ?

    2.6K10

    如何打印Msbuild时日志信息

    OK,换一个思路,我们在编译时出错了,肯定是有错误提示,只是vs把这个提示细节忽略了。 那么我们是不是可以试试命令行呢。 试了一下。可以哟,编译过程内容在cmd中有输出,还发现了红字。...(项目原因,不上图了) 但是这里信息似乎有些太多啦,很难在cmd窗口中发现问题代码。 OK,那我们是否可以寻找一种将msbuild日志输出方法呢?...当然有,方法就是 MSBuild.exe MyProj.csproj ^ /filelogger /fileLoggerParameters:Verbosity=diag 这样就是在你对应项目下生成编译日志...,然后通过日志查找就很容易定位到问题了 参考链接:MSBuild: a simple way to find out all properties and their values while building...,同时有更好阅读体验。

    1.2K20

    日志到底该如何打印

    今天,我们来看第一个问题: 日志到底该如何打印? 咋一看,这个问题很简单,其实不然,我随手写几个,您看看。...实话说,没有正确,全是错。怎么样,是不是踩坑了,是不是给别人埋过这样坑。 那么,怎么打印日志才是正确呢?...如果您使用是slf4j,那么,只有下面这一种是正确: log.error("xxxxx, userId={}, xxParam={}", userId, xxParam, e); 首先,打印日志必须带上上下文信息...,比如,用户ID,关键参数,同时,如果是捕获异常里面打印日志,必须把原来e打印出来,否则,排查日志想死心都有了。...有没有更优雅日志打印方式呢? 我认为,最好日志是以解决问题方式打印日志。 怎么理解呢? 我们以服务注册为例,当注册中心地址不通时候,我们能不能这样打印呢?

    90540

    最简日志打印规范

    个人认为,如果在公司野蛮生长阶段,一些基础类库不做约束,很可能“埋坑”,形成技术债务,最终为此付出代价。本文讲解一个最简日志打印规范。...所以,我又造了个轮子,写了个简单易懂、容易记“最简日志打印规范”,后续随着团队实力增长,和项目的演进,会逐步增加新条例。 1....不过很多场景下,过多DEBUG日志,并不是好事,建议是按照业务逻辑走向打印。打个比方,打印日志就像读书时划重点,如果导出都是重点,也就失去了重点。...日志打印场景 在我们系统中,不同日志级别的打印场景大致如下: 日志级别 打印场景 DEBUG 调试日志。目前管理相对宽松,我们暂时没有严格要求。 INFO 业务日志。...我们用来记录业务主流程走向。 WARN 警告日志。一般来说,发生对整个系统没什么影响异常时,可以打印该级别的日志。 ERROR 错误日志

    2.8K70
    领券