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

打印日志竟然只晓得 Log4j?

这篇文章就来说说 Log4j,这个打印日志的鼻祖。Java 中的日志打印其实是个艺术活,我保证,这句话绝不是忽悠。 事实证明,打印日志绝逼会影响到程序的性能,这是不可否认的,毕竟多做了一项工作。...尤其是在交易非常频繁的程序里,涌现大量的日志确实会比较低效。 基于性能上的考量,小伙伴们很有必要认认真真地学习一下如何优雅地打印 Java 日志。毕竟,性能是一个程序员优不优秀的重要考量。...DEBUG 的级别最低,当需要打印调试信息的话,就用这个级别,不建议在生产环境下使用。 INFO 的级别高一些,当一些重要的信息需要打印的时候,就用这个。...直接用 logger.debug() 不香吗?我来给小伙伴们解释下。...3)使用 Log4j 而不是 System.out、System.err 或者 e.printStackTrace() 来打印日志,原因之前讲过了,就不再赘述了。

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

    记一次log4j不打印日志的踩坑记

    起因 前几天一个跑有java应用的生产集群(200多台物理机)升级了一个版本,重启后发现约有50台机器日志不能正常输出,但其程序却能正常的运行,在生产环境中,日志是非常重要的一个监控手段,如果没有日志输出...SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 起初并没有在意日志包冲突的这个细节,因为其他正常启动并能够正常打印...SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] (2)少部分正常打印log的机器和其他不打印...,所以解决的方法就是移除掉与其冲突的log4j 1.x的slf4j-log4j12-1.7.12.jar包即可。...比如: 常用的日志组件都有哪些? log4j1 和 log4j2的区别是什么? slf4j是什么,用来解决什么问题? log4j与slf4j有什么关系? slf4j是如何处理冲突的?

    12.2K20

    【Java】Log4j日志

    目录 1.日志概述 日志是什么 为什么会有日志 2.log4j概述 什么是log4j 版本 3.log4j入门案例 步骤 实现 总结 4.log4j1详情:记录器rootLogger 5.log4j1...取代System.out打印异常。 为什么会有日志 1、问题追溯,通过日志文件的记录,快速查找问题根源。 2、状态检测,检测我们系统状况,为项目出现的问题做好预警。...3、安全审计 2.log4j概述 什么是log4j Log4j是Apache旗下的一款开源的日志框架。...输出过程:通过定义日志的输出级别,可以更灵活的控制日志的输出过程 版本 log4j的结构、性能被很多新的日志框架所替代。...平台的换行符为 "\r\n",Unix 平台为 "\n") %r 输出自应用启动到输出该 log 信息耗费的毫秒数 %c 输出打印语句所属的类的全名 %t 输出产生该日志的线程全名 %d 输出服务器当前时间

    78330

    如何打印日志

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

    1.1K20

    Log4j 日志详细用法

    简单的说log4j就是帮助开发人员进行日志输出管理的API类库。...它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地、日志信息的输出格式 Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。...比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。...),    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:   ...举例:Testlog4.main(TestLog4.java:10) 2、在代码中使用Log4j ①得到记录器 使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。

    3K20

    聊聊日志打印与日志审计

    二.日志切面 ​ springboot中默认提供的日志打印功能无法打印函数的入参与出参信息。现在如果有个bug在生产环境可以复现,测试环境怎么也复现不了,本地代码又无法连接生产环境进行调试。...生产环境一般一般情况下指挥打印info级别的日志。这个时候就头疼了,无法定位解决问题。 ​ 因此线上环境能有一个功能帮我们打印函数的详细的入参或者出参这个功能是很重要的。...当然这个功能默认情况下还是不要开启,毕竟大多数线上环境的调用链封装比较深,出参与入参信息打印会比较多,对于日志的存储会是一个比较大的问题。...>[] excludeReturnClass; //不进行日志打印的类 private static final Class不阻碍实际的业务请求。

    2.7K10

    Ijkplayer打印FFMpeg日志

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

    2.7K30

    Java日志体系(log4j)

    而additivity指的是子logger在输出完日志后,是否把输出信息传递给上一层,true为传递,false为不传递;如果传递的话,则会输出两遍相同的日志信息。...: //日志对象唤起日志输出目的地Appender:进行日志打印 public void callAppenders(LoggingEvent event) { int writes = 0;...无论多少个线程进行请求,到此处都需要进行获取锁的操作,才可以进行日志的打印。这也就是说,线程越多,并发越大,此处的锁的竞争越激烈,进而导致系统性能的降低。...既然缓存的优势这么明显,为什么log4j不默认开启缓存呢? 缓存的存在,有利有弊。...) 立刻刷入,日志信息落盘; 接下来,修改配置文件信息,开启缓存,不立刻刷入磁盘; <appender name="FILE" class="org.apache.log4j.FileAppender"

    2.3K110
    领券