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

Java e.printStackTrace()异常信息怎么打印到log日志

最近工作遇到一个问题是测试环境服务器上的日志打印不出错误出现在第几行,尤其是在出现反射或代理等的情况下使用e.getStackTrace方法不能打印出错误类型和错误行数。...但是在控制台使用e.printStackTrace()却能打印出错误类型或错误行数,如空指针。...但是e.printStackTrace()方法只能使用在控制台中,那么我就想怎么把e.printStackeTrace的栈信息打印日志中呢?...,然后再把内容付给一个字符串,最后就可以把logger.error(exception)把错误内容打印日志上了。...这位网友也说明: Exception.printStrackTrace()中虽然有出错点信息,但都打到控制台上去了,Exception.getStackTrace(),并不能获得出错点的提示信息

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

实战-配置+OmitStackTraceInFastThrow 导致不打印日志具体信息

后面通过一位大佬的提醒说,jvm默认是启用:-XX:+OmitStackTraceInFastThrow 当打印同样错误日志到一定次数就会被jvm默认优化掉。...立即马上重启服务,再invoke一下,发现如下: 总算复现以上bug,但是为什么只有空指针异常没有详细信息呢?...通过查询jdk5以后jvm做了一个优化,当同样错误日志频繁打印,JIT会重新编译抛出没有堆栈的信息异常。...e){ e.printStackTrace(); } } } } 刚开始 最后到一定数量虚拟机就直接吃掉堆栈错误信息...,只剩下空指针异常~ 配置打印全部日志 -XX:-OmitStackTraceInFastThrow 可以看出打印了全部日志 最后查询该问题的方法有三: 1.查询历史日志,如果日志量比较大的话就很难了

1.3K30

log日志中不打印异常栈的具体信息

问题与分析 最近在查项目的log时发现报了大量的NPE(NullPointerException),诡异的是只log了Exception的类名,却没有具体的堆栈信息,以致于无法对该NPE异常进行准确定位...这是因为jvm自身存在着优化机制,但一个同样的异常重复出现并被打印到log后,jvm可以不提供具体的堆栈信息来提高性能。...关于这个的具体信息我们可以从官网上查到相关的资料: http://www.oracle.com/technetwork/java/javase/relnotes-139183.html#vm The compiler...重启服务器时jvm被重新启动,这样再遇到同样的Exception时就会打印出来,当然如果后续如果重复遇到同样的Exception还是无法打印出具体的异常栈信息。...当时我是选择了后者这个方案,因为如果启用了该参数会导致log日志太过庞大,也降低了性能,直接重启服务器,并快速定位bug以便于解决问题。

93320

django日志默认打印request请求信息的方法示例

需求 请求view中手动打印日志时中插入request的如下信息(每个request请求都记录可以使用中间件进行解决,但这里仅仅是在需要的地方手动打印): #统一附加日志内容 ADD_LOG = r...,通过 logging extra 进行额外的打印信息添加:每次手动添加同样的extra非常的不优雅。...,将当前请求线程的request信息保存到日志的record上下文 record带有formater需要的信息。...django.middleware.clickjacking.XFrameOptionsMiddleware', 'wcloud.middleware-waiwen.RequestLogMiddleware' #使用该中间件 #将当前的request信息保存到当前线程供日志打印使用...参考: 给Django日志加上request_id 总结 到此这篇关于django日志默认打印request请求信息的文章就介绍到这了,更多相关django日志默认打印request请求信息内容请搜索ZaLou.Cn

1.9K20

如何打印日志

日志存在的问题 安全问题 将用户的敏感信息打印在了日志日志级别不合理 warning日志较为泛滥,且少有人关注 部分阻塞业务流程的错误,未正确使用error日志 错误日志重复打印 同一个错误在不同的位置重复打印...无效日志较为泛滥 一个正常处理的请求触发上千条info日志 日志缺乏关键信息 日志中缺乏关键的信息,进而导致难以定位问题 好的日志 快速定位线上问题 日志是定位线上问题的重要途径 杜绝安全问题 随意的日志打印可能会造成用户信息泄漏...每一条Error日志都需要研发同学关注 要 及时查看 Fatal 导致系统崩溃的错误信息(使用量较少) 要 立即处理 日志打印原则 记录完整 【强制】关键日志必须打印路径,打印日志必须带上关键信息 【...除外) 【建议】谨慎的使用日志进行打点 合理分级 【强制】日志打印时应选择合适的级别 保证安全 【强制】原则上禁止日志汇总禁止打印用户L4级别的日志 【强制】日志打印满足飞书日志打印安全规范 【建议】使用合适的脱敏方式对敏感信息进行脱敏...,打印日志必须带上关键信息 【强制】日志打印时必须携带logID

39720

异常解决:jvm配置+OmitStackTraceInFastThrow 导致不打印日志具体信息

通过invoke 调用dubbo接口发现,异常居然打印不全.....只有java.lang.NullPointerException ? 百思不得其解........其间,通过查询日志发现的确日志只有这么一点点... 查询其他异常没有发现~ 复现也未复现出来~ ......后面通过一位大佬的提醒说,jvm默认是启用:-XX:+OmitStackTraceInFastThrow 当打印同样错误日志到一定次数就会被jvm默认优化掉。...总算复现以上bug,但是为什么只有空指针异常没有详细信息呢? 通过查询jdk5以后jvm做了一个优化,当同样错误日志频繁打印,JIT会重新编译抛出没有堆栈的信息异常。...最后到一定数量虚拟机就直接吃掉堆栈错误信息,只剩下空指针异常~ ? 配置打印全部日志 -XX:-OmitStackTraceInFastThrow ? 可以看出打印了全部日志 ?

1.3K10

聊聊日志打印日志审计

二.日志切面 ​ springboot中默认提供的日志打印功能无法打印函数的入参与出参信息。现在如果有个bug在生产环境可以复现,测试环境怎么也复现不了,本地代码又无法连接生产环境进行调试。...生产环境一般一般情况下指挥打印info级别的日志。这个时候就头疼了,无法定位解决问题。 ​ 因此线上环境能有一个功能帮我们打印函数的详细的入参或者出参这个功能是很重要的。...当然这个功能默认情况下还是不要开启,毕竟大多数线上环境的调用链封装比较深,出参与入参信息打印会比较多,对于日志的存储会是一个比较大的问题。...logstash拉取kafka上的日志信息存储至es中。到这一步日志数据链路已经打通了。...不进行过滤的情况进行解析HttpServletRequest获取请求的参数信息,根据请求头的身份验证信息获取用户信息,如果身份验证失败,也可进行记录,防止恶意攻击,频繁攻击的可以直接封禁ip请求。

2.3K10

Tomcat - 怎么控制某个类或者包下的日志打印级别

问题与分析 Tomcat是使用自己的日志实现tomcat-juli.jar来打印日志信息的,日志会被打印到catalina.out里,除去你在项目里自己使用的日志框架外,由System.out,System.err...或者printStackTrace()打印出来的信息则是会被输入到catalina.out里,如果引用的jar包里也有这些语句也会一起输入到catalina.out里。...比如现在catalina.out里有大量的NotSerializableException,这个exception是由第三方jar包打印出来的,log日志如下: 1 2 30-Oct-2018 17:53...你甚至可以将范围进行扩大,变成如下配置: 1 de.javakaffee.web.msm.level = SEVERE 指定de.javakaffee.web.msm包下的类只打印SEVERE级别的日志信息...补充 如果希望不打印日志信息,可以将level设置为OFF。 如果希望打印全部的日志信息,可以将level设置为ALL。

81220

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.4K30

如何打印日志

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

8010
领券