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

Java如何正确地输出日志

invite_code=2oupi2ih194w8 不能面向debug编程,过于依赖debug,应该多依赖日志输出; 代码开发测试完成之后不要急着提交,先跑一遍看看日志是否看得懂; 日志必须包含哪些信息...printInfoLog默认值为false,可通过动态修改某个类的日志级别为DEBUG,达到打印方法入参和出参的目的 过滤掉不需要打印的入参 当一个入参很大,某些数据打印出来没意义,或者属于敏感信息不能打印...implements LogService { /** * 获取用户信息,用于放入日志框架的MDC里 * * @return java.lang.String * @author...时,MDC中应该切换为方法queryOrderDetail的值。...;也包含了此次请求的用户(实现接口LogService获取用户信息);也包含了每个方法特定的key,方便程序员追溯问题。

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

    Java Map通过值来获取键的正确姿势

    本文将展示3种,Java中通过Map的值获取其键的方式。本文将讨论不同方法的优缺点。...如果想学习Map的更多内容,参见The Java HashMap Under the Hood  一、Java API 方法1: 迭代方式 Java 集合框架的Map类提供了 entrySet()方法,...方法2: 函数式查找 我可以采用Java8的Lambda表达式,来更灵活和可读地方式实现类似功能。 我们可以使用Stream的map函数,返回满足条件的Entry的键。...调用者或许只需要一个或者所有指向某个值的键。因为Stream是惰性求值的,调用方可以根据需要控制迭代的次数。 另外,使用合适的收集器(collector)可以将返回值转换成需要的集合形式。...在这种场景下,维护另外一个值指向键的map就很有必要了,因为这样可以使通过值获取键的时间复杂度降为常数级。

    5.7K20

    【Java 基础篇】Java 标准输出流详解:输出你的程序之美

    Java 编程中,标准输出流是一个重要的概念。它允许我们将程序的输出信息显示在终端或控制台上,这对于调试、用户界面和与用户的交互非常重要。...打印变量的值 你可以将变量的值打印到标准输出。例如: int age = 25; System.out.println("我的年龄是:" + age); 这将打印出 "我的年龄是:25"。...格式化输出 Java 提供了 printf 方法,用于格式化输出。你可以使用格式化字符串来指定输出的格式,然后将要输出的值传递给 printf 方法。...在实际应用中,特别是在生产环境中,更推荐使用专业的日志框架以及良好的日志管理实践。 总结 Java 的标准输出流是一个重要的工具,用于打印程序的输出信息。...此外,我们还介绍了如何将输出重定向到文件或字符串,以及一些处理错误输出的方法。 标准输出流对于调试和日志记录非常有用,因此请牢记这些知识,以便在开发 Java 应用程序时能够更好地利用它们。

    75720

    Java 程序如何正确地打日志

    简单的说,日志就是记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。...我们 Java 程序员在开发项目时都是依赖 Eclipse/ Idea 等开发工具的 Debug 调试功能来跟踪解决 Bug,在开发环境可以这么做,但项目发布到了测试、生产环境呢?...你有可能会说可以使用远程调试,但实际并不能允许让你这么做。 所以,日志的作用就是在测试、生产环境没有 Debug 调试工具时开发、测试人员定位问题的手段。...日志打得好,就能根据日志的轨迹快速定位并解决线上问题,反之,日志输出不好不能定位到问题不说反而会影响系统的性能。...知道了日志级别,这还只是基础,如何了解打日志的规范,以及如何正确地打日志姿势呢?! ? 打日志的规范准则 最开始也说过了,日志不能乱打,不然起不到日志本应该起到的作用不说,还会造成系统的负担。

    88330

    论获取缓存值的正确姿势

    论获取缓存值的正确姿势 cache 时至今日,大家对缓存想必不在陌生。我们身边各种系统中或多或少的都存在缓存,自从有个缓存,我们可以减少很多计算压力,提高应用程序的QPS。...不过,这样的获取缓存的逻辑,真的没有问题吗? ---- 高并发下暴露问题 你的程序一直正常运行,直到某一日,运营的同事急匆匆的跑来找到你,你的程序挂了,可能是XXX在大量抓你的数据。...我们重启了应用也没用,没几秒程序又挂了。 机智的你通过简单的排查,得出数据库顶不住访问压力,顺利的将锅甩走。 不过仔细一想,我们不是有缓存吗,怎么缓存没起作用?...---- guava 和 guava cache guava是一个google发布的一个开源java工具库,其中guava cacha提供了一个轻量级的本地缓存实现机制,通过guava cache,我们可以轻松实现本地缓存...此时,guava cache通过刷新策略,直接返回旧的缓存值,并生成一个线程去处理loading,处理完成后更新缓存值和过期时间。guava 称之为异步模式。

    1.8K80

    谁说程序员不能潮?高颜值红包开启你的RICH年

    另外,全宇宙最性感的PUPU鹅 也加入到这次新春祝福大军中哦 ? ?  开启RICH年  换鸿运壁纸  5张福卡现已制作成一套鸿运壁纸 现在开始 换上这套福气满满的壁纸,新年行大运完全OxxK!...RICH加持,代码写最溜,行行值千万! 「 02 」 亿万点赞 人气王 ? 亿万点赞你,BUG不缠身,职位步步升! 「 03 」 维密附身 狂吃不胖  ? 不做加班狂,顿顿高质量,脂肪不长荷包涨!...我们的好朋友 全宇宙最性感的PUPU鹅送财 一年从头富到尾! ? 开启rich年只有福卡怎么够! (高清福卡怎么获取?...请一定看到底部) 红包一发 好运大发 潮味红包出手 开启RICH运哦~ 有了这套高颜值利是神器 新年潮范附体 好运全部盘进来 开启RICH年 发颜值爆表红包 开年rich红包一套共6个 颜值爆表 有型好看...出手的一刻备感RICH ? ? 那么有RICH范儿的红包 配上今年最潮收发红包新姿势 ? 猴赛雷!!! ? 是不是已经内心澎湃好想全部带回家! 这套RICH红包现在限量发放!

    66230

    程序猿的无所不能

    我一脸懵逼…… 我是一名程序员,长相一般,水平一般,什么都一般的普通程序员。...可在朋友眼中,我是无所不能的,只因为我是程序猿…… 一、收入肯定比我们高 毕业刚开始工作的时候,周围的同学和损友总是羡慕,刚进公司的收入就比他们高出很多,我很淡定,小小装X了一把,「今天我请客」。...后来的后来,我们就在一起了…… 三、可以破解一切密码 在我的大学时代,QQ空间和人人还是主流,很多同学总会问我,「能不能帮我破解某某某的QQ空间密码」,「能不能知道我男朋友的密码,看看聊天记录」。...也许是现在的科技对密码的保护太强大了,但更多的,我还没达到魔高一丈的境界吧——不然我现在怎么还是个苦逼的程序猿呢。...谁叫我是绝佳暖男呢,可是,可是,为什么就不能再深入发展下去呢?其实原因很简单,因为我是绝佳暖男呀。 后记 其实程序员只是一类普通的职业,有混的开的,有混不好的,和其他职业一样。

    34810

    用JavaScript动态输出的JS脚本不能执行

    动易2006的前台登陆表单已经采用了Ajax技术,页面上所看到的登陆表单并非直接由HTML代码在页面中写成,而是在页面加载以后,通过JS,通过Ajax,向服务器端的asp程序查询用户登录状态以后,再动态输出到页面的...一开始我通过JS,动态生成调用script的HTML代码以后,输出到页面,跟其它的HTML代码一样。结果出现了通行登陆不能同步的问题。...用alert调试发现代码已经正确生成,显然用innerHTML输出到页面以后,是没有问题的。但是为什么没有登陆呢? 为这个问题,折磨了我一晚上。...天亮的时候跟动网公司的迷城浪子聊到这个问题,老迷没看我的脚本,只是听我讲了一遍,回答我说“JS输出的JS脚本不能被执行的吧?” 难道真是这个问题?...后来我写了一个段测试脚本,果然是js输出的js将不能执行。

    3.3K50

    Go 100 mistakes之如何正确设置枚举值中的零值

    我们知道,在Go中会给定义的变量一个默认值,比如int类型的变量默认值是0。我们在定义枚举值时,往往也会从0值开始定义。本文就解释如何区分是显示指定了变量的0值还是因为确实字段而得到的默认值。...同时阅读者如果没有相关的阅读文档或者代码的话也不能猜出该函数返回的是什么值。...在例子中,我们可以接收一个JSON内容并正确解码: { "id": 1234, "weekday": 0 } 这里,Weekday字段的值会等于0:Monday。...实际上,Unknown是枚举值的最后一个值。因此,它的值应该等于7. 为了解决该问题,处理一个unknown的枚举值的最好的实践方法是将它设置成0(int类型的零值)。...根据经验,枚举的未知值应该设置为枚举类型的零值。这样,我们就可以区分出显示值和缺失值了。

    3.8K10
    领券