首页
学习
活动
专区
圈层
工具
发布

如何打印日志

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

1.2K20

如何打印好日志

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.核心功能模块,建议打印详细的日志

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

    日志到底该如何打印?

    今天,我们来看第一个问题: 日志到底该如何打印? 咋一看,这个问题很简单,其实不然,我随手写几个,您看看。...那么,怎么打印日志才是正确的呢?...,比如,用户ID,关键参数,同时,如果是捕获异常里面打印的日志,必须把原来的e打印出来,否则,排查日志想死的心都有了。...比如,我最近就遇到一个同学,他把远程调用用一个try catch包着,并在catch中捕获了异常,打印了日志"远程调用错误xxx",呵呵,有一次请求失败,非要说远程调用失败,对方出错了,对方说我没收到请求呀...有没有更优雅的日志打印方式呢? 我认为,最好的日志是以解决问题的方式打印日志。 怎么理解呢? 我们以服务注册为例,当注册中心地址不通的时候,我们能不能这样打印呢?

    1.2K40

    如何安全地打印日志

    如何打印日志?这不是很简单,直接使用android.util.Log这个类不就行了?...安全的概念本来就是相对的,如果破解你程序的代价远远大于破解得到的价值,那么就可以认为程序是“安全的”;这里就分析一下,为了提高程序的安全性,在打印日志的时候应该注意什么。...首先看看绝大部分公司以及开发者的做法: 日志开关+日志类 为了在release版本里面没有日志输出,一个最简单的想法是:把所有打印日志的语句放在一个if(DEBUG)的语句里面;在日常开发的时候,DEBUG...让release版本里面不包含日志代码 从上面的分析我们得到一个结论:如果需要程序是“日志安全的”,那么release版本里面不应该存在输出日志的代码。 如何做到这一点呢?...我们可以做一个工具,开发的时候,正常打印日志;一旦需要发布版本,把所有打印日志的语句代码,全部删除掉。代码很简单,用一些正则表达式就可以做到。

    1.5K30

    【Log日志】在日志系统初始化之前如何打印日志

    之前在文章 使用Nacos简化SpringBoot配置(所有配置放入到Nacos中) 中有实现一个 EnvironmentPostProcessor的扩展接口; 但是发现日志并没有打印出来, 然后就跟着源码找了一下问题...看看日志系统加载的时机 日志系统初始化的地方 LoggingApplicationListener.onApplicationEnvironmentPreparedEvent() 知道了日志初始化的时候是在这里...; 自然而然的 在这之前的所有日志操作都是无效的; 解决方案 使用 DeferredLog 缓存日志;并在合适的时机回放日志 public class NacosEnvPostProcessor...postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { LOGGER.info("打印日志...com.xxx.NacosEnvPostProcessor org.springframework.context.ApplicationListener=com.xxx.NacosEnvPostProcessor 参考文章 java - 如何在

    2K20

    聊聊日志打印与日志审计

    二.日志切面 ​ springboot中默认提供的日志打印功能无法打印函数的入参与出参信息。现在如果有个bug在生产环境可以复现,测试环境怎么也复现不了,本地代码又无法连接生产环境进行调试。...生产环境一般一般情况下指挥打印info级别的日志。这个时候就头疼了,无法定位解决问题。 ​ 因此线上环境能有一个功能帮我们打印函数的详细的入参或者出参这个功能是很重要的。...那对于日志数据如何进行解析有两种方式,一种是利用kibana上面默认提供的一些报表功能,另外一种就是需要集成在当前应用系统内的报表数据展示,做二次业务应用开发。 ​...解析完成将消息发送到kafka。...至此,web拦截的自动配置包就已经做好了,将starter推送至中央仓库,业务应用引入即可实现自动发送至kafka日志审计的topic。

    2.8K10

    Ijkplayer打印FFMpeg日志

    背景 在打印Ijkplayer播放日志的过程中,在ijkplayer中日志可以正常输出。...但是涉及到FFMpeg的日志,则无法输出 原因 由于FFMPeg中的libavutil/log.c中使用的是fprintf,所以输出到了标准输出中,而Android有自己的一套输出日志的端口。...需要使用av_log_set_callback将日志桥接到自定义的函数,然后通过该函数进行重输出。 方案 ....ffmpeg库,而不是extra下面的ffmpeg 在ijkplayer的ff_player.c中的ffp_global_init通过av_log_set_callback注册好回调函数,然后即可通过该函数将ffmpeg...库中的输出重定向到ijkplayer中 这步完成后,发现还是打印不出来日志 最后,一怒之下,把ijksdl_log.h中的日志打印都换成了android jni的日志打印,就打印出来了 #ifdef

    2.8K30

    Python 打印彩色日志

    我相信每一个开发者都有打印日志的习惯,好看的日志可以加快调试的速度,可以更好的了解程序中发生的事情。本文分享一个技巧,可以让 Python 在控制台输出彩色的日志。...安装 coloredlogs pip install coloredlogs 使用 首先,和正常打印日志一样,我们创建一个 logger logging.basicConfig() logger =...white'), funcName=dict(color='white'), lineno=dict(color='white'), ) ) 接下来就和正常使用日志一样了...,配置一个流处理器,让日志显示在控制台: ch = logging.StreamHandler(stream=sys.stdout) ch.setFormatter(fmt=coloredFormatter...) logger.addHandler(hdlr=ch) logger.setLevel(level=logging.DEBUG) 接下来就可以输入日志信息了: logger.debug(msg="this

    2.2K30

    MySQL打印死锁日志

    1.手动打印死锁日志 当业务发生死锁时,首先是线上错误日志报警发现死锁异常,也会提示一些堆栈信息,然后会反馈到数据库层面进行排查。...我们一般会在命令行执行 show engine innodb status\G 来输出死锁日志,\G 的作用是将查询到的结果,每行显示一个字段和字段值,方便查看。...----------+-------+ | innodb_print_all_deadlocks | ON | +----------------------------+-------+ 建议将...其实 InnoDB 存储引擎还提供有 InnoDB Monitor 监视器,可以定期将 InnoDB 的状态信息输出到错误日志中,主要由 innodb_status_output 和 innodb_status_output_locks...不过这会导致错误日志暴增,一般不建议开启这两个参数。 总结: 本篇文章介绍了 MySQL 死锁日志的获取方法,发生死锁后,可以根据死锁日志还获取相关信息。

    2.2K10
    领券