范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

后端如何更好的输出应用日志

  日志作为应用故障排查的一个重要利器,是应用开发中的重要一环。但是日志如何打印、打印那些信息却没有一个非常好的规范,本文根据自己多年开发经验,总结出一些日志打印的好的实践。
  好的日志用一句话来说就是在正确的位置输出有用的信息。这里包含几个重要信息:日志打印的位置日志打印级别日志输出内容一、日志级别
  日志一般有DEBUG、INFO、WARNING、ERROR、FATAL等5个级别,
  级别
  说明
  DEBUG
  开发调试信息,方便开发过程中定位问题
  INFO
  对于现网定位问题比较有用的信息,但又不会输出过多信息,如请求、响应信息
  WARNING
  不会对服务运行造成影响的,但是又不符合预期的,如请求参数检验不通过,触发限频等
  ERROR
  记录导致接口无法正常运行的错误详情,如查询MySQL失败、调用外部服务报错等
  FATAL
  记录导致服务异常停止的信息,一般不常用
  生产环境中,我们一般会开启INFO级别日志的打印,这样可以在保证有足够信息的前提下,又不会丢失一些重要的应用运行信息。而且一旦INFO日志不足以定位应用信息,可以临时把日志级别调整为DEBUG以获取更多日志信息。二、日志内容与时机2.1、日志中的字段
  日志中需要记录尽可能多的信息,以保证后续更方便快捷的定位问题,但是记录太多会导致日志文件膨胀过快,如果日志上报Elasticsearch等搜索系统,也会造成占用空间过大的问题,因此需要对日志写入的字段做一个取舍。
  下面表格中总结出一些常用字段及其说明
  字段
  必选
  示例
  说明
  time
  是
  2022-01-22 12:23:34.234
  日志时间,精确到毫秒
  client_ip
  是
  2.3.12.3
  接口调用方IP
  remote_ip
  是
  10.1.2.56
  TCP/IP的对端IP,可以快速获知负载均衡IP
  level
  是
  INFO
  日志级别
  level_no
  是
  400
  日志级别对应的数字   request_id   是   d0d32288-817d-444c-b4ae-e703f5ab1f2f   请求ID,用于标识一次请求全过程,推荐使用uuidv4。   trace_id   是   591fe421-1915-4efc-bfe6-4d1c4470d650   跟踪ID,用于记录外部传递过来的请求ID,可以记录页面关联的请求链。   uid   是   123234
  客户的账号ID   channel   否   app   用于标识日志类型,可选   interface   是   /api/v1/pets   请求接口名称,如果时uri形式,则直接为请求路径,如:/api/v1/pets/dogs   message   是   Rcv request   简短的描述,重点是要通过该字符串可以定位到某一类请求,如:Send Response、Query price、Call UpdateDomainInfo failed   context   是   用于补全message中操作上下文信息,如更新域名是的域名和更新的信息等   以上表格中的每个字段应该出现在每条日志中以便于搜索所有涉及到的日志。其中request_id应该在一次请求过程中确定且唯一,以便定位整个请求。   上图中可以和很方便的定位一次请求中所有相关日志2.1、日志格式   日志信息中应该包含一段可以说明日志作用的简短描述,比如接收到请求(Rcv request)、发送响应(Send response)、调用第三方http接口(Call http api)等。当然只有这些信息还是不够的,应该将输出日志时的上写文也输出到日志中才能方便后续问题的定位。如接收到请求时的请求详情(请求url、请求方法、请求body和请求头等)、触发限频时的相关信息(限频Key、限频值)等。   确定了要写入的内容后,就是要确定以什么形式写入日志。一般我们会直接将相关信息与描述一起拼接为字符串,如:接收到请求会拼接为   Rcv request: POST /api/v1/pets headers: {"host":"example.com","content-type":"application/json","user-agent":"curl"} body:{"category":"pig"}   这种方式简单直接,但是日志字符串需要提前拼接,如果这是一条DEBUG日志,在生产环境不会真实写入的情况下,依然会提前拼接,而字符串拼接会造成一定的性能损失。一个好的方法是将上下文信息传入日志参数来实现延迟拼接(序列化)。logger.debug("Rcv request", context={ "method": "POST", "body": "{"category":"pig"}", "headers": { "host": "example.com", "content-type": "application/json", "user-agent": "curl" } })   通过参数传递上下文并且写入日志的方式还有一个好处就是后期如果需要分析日志会非常方便快捷。   通过搜索rcv request可以快速定位所有请求   日志最终输出的格式可以选择常用的JSON格式,然后上报日志统一搜集平台进行解析搜索,以下是一个请求和响应的日志条目示例。   请求日志示例   响应日志示例2.3、常见日志输出位置及内容   下表中总结了一些常见的打印日志的位置、消息内容及应该记录的消息内容。   常见日志场景三、日志上报   日志一般以文件的形式写入本地硬盘,对于k8s也可以输出到stdout、stderr。如果应用是单机部署,可以直接使用grep来过滤查询日志,但是当应用部署在多台机器再使用grep来查询日志会有点不太现实,这时候需要一个日志搜集处理系统,但是此系统不做为本文的重点,只是简单介绍一些平台:自建ELK(Elasticsearch+Logstash/Filebeat+Kibana)腾讯云CLS阿里云SLS   文章来源:yaxin_https://cloud.tencent.com/developer/article/2205977

云中漫步!海淀西三旗街道近4万平方米绿地重生北京日报客户端记者孙颖云中漫步,老人们在这里闲坐下棋,孩子们在这里嬉戏玩耍,年轻人在彩虹上健步这样的场景将出现在海淀区西三旗街道云享气象谷公园,而去年这里还是一处普通的街边绿化带。骁龙8Gen2立大功,三星S23Ultra续航首次接近榜首5小时剩47头条创作挑战赛日前,数码博主DTCHAT更新了一波机型实测数据库,5小时综合续航表现机型中,三星新机S23Ultra的剩余电量有看点,从上代S22Ultra的34进步到S23Ult国军少校被俘后,连喊误会告诉你们首长我代号902,肖劲光接见1947年,时任辽东军区司令员的肖劲光,突然接到辽南军区送来的一个消息有一位被俘国军少校,声称自己的代号是902,要见你。彼时,正值解放战争的关键时期,敌军官兵被俘后不断喊冤是很常2019年以色列探月计划失败,却把一种生物留在月球,后来怎样了?头条创作挑战赛自古以来世界各地文明都对月球有着神奇的想象,但直到上世纪60年代随着人类航天技术的发展才让登月有了可能。在美国阿波罗登月计划结束后人类依然对探索月球充满兴趣,201920世纪,英国联邦政府是如何遏制马来亚政务发展的?历史开讲20世纪,英国联邦政府是如何遏制马来亚政务发展的?首先,在回答这个问题前,我们需要知道,1953年4月,联邦政府提出设置一些类似于英国议会职位体系中的副职,供亚裔政治家们锻苏联外交官通过朝鲜一侧三八线逃亡韩国,差点引发第二次朝鲜战争在八十年代初,是冷战最高峰,也是最后的疯狂。在此期间美苏双方都竭力鼓动和策反对方的高级官员叛逃。而在1984年,一个苏联外交官的突然叛逃差一点引发第的二次朝鲜战争。这里必须要指出的李自成的黄金用17头驴秘密运到山脚,知情人全被杀,现已被破解李自成的黄金用17头驴秘密运到山脚,知情人全被杀,现已被破解。大明王朝末年,朝廷腐败,宦官专权,内外勾结民不聊生,那段时期,国内发生旱灾,尤以陕西一带最为严重,而朝廷加重赋税,民众告诉你三面五星红旗背后你不知道的故事!你可能不知道,在天安门前升起的国旗每天都会换一面新的,而且每一面国旗被取回之后,都会放在锦盒里编号珍藏。这些被珍藏的国旗最终去了哪里呢?有的被盖在了烈士的棺椁上,比如2021年9月考古发现黄帝族是突然瓦解的,当时中国究竟发生了什么?黄帝被尊祀为人文初祖,炎黄子孙一词也成为几乎所有华人的自称。但即便如此,在现有的历史学研究框架内,黄帝仍然只能算作传说人物。这是因为,除了史书当中对黄帝的半神话色彩的记载外,还没有后金立国和清军入关始末15世纪初期,位于东北亚的女真族大致分成三部分,其中以建州女真最为强大。建州女真源自于辽金时代生女真完颜部的附属五国部,居于牡丹江与松花江汇流地方,在元代组成为五个女真万户府,元末塞浦路斯的历史变迁铜矿之国何以一分为二?头条号天启元贞文塞浦路斯是位于地中海东北部的岛国,面积9251平方公里,人口100万左右,属于发达国家。塞浦路斯属于典型的地中海气候,冬季多雨,夏季干热,山地和平原的气温差异大,非
华尔街权威媒体重磅聚焦波场与多米尼克历史性合作当地时间10月7日,加勒比地区国家多米尼克官方宣布,已与波场TRON达成协议,指定波场TRON协议为该国国家区块链基础设施,并授权其发行该国粉丝代币。同日,多米尼克通过立法确认波场首套房的商业贷款利率变成3。9了!刷新历史新低22年10月14日,天津市首套房的商业贷款利率变成3。9了!彻底刷新了历史新低。先解释一下3。9是怎么来的。是由现在的贷款市场报价利率,也就是LPR4。3,减去40个基点,也就是优揭示从鱼到人进化的奥秘,中科院连发4篇Nature,填补历史空白人类是由远古时期的鱼进化而来?最近,一批来自志留纪早期的化石揭开了我们古老鱼形祖先神秘的面纱。志留纪有颌鱼类长什么模样?最早的牙齿什么时候出现?4。4亿年前新塑梵净山鱼,身上有多少消逝的古城巴彦淖尔市的横塞军故城遗址古城位于内蒙古自治区巴彦淖尔市,乌拉特中旗新忽热苏木苏木所在地城圐圙村北侧,一般称为新忽热古城。地处阴山山脉以北乌拉特草原东南低山丘陵环抱的盆地之中,北方为草原坡地,南方为草原,有多元投资视角下的理财产品绝对收益策略探索文郝琳施罗德交银理财多资产投资负责人(本文节选自2022中国资产管理趋势报告)今年以来,市场经历新冠疫情反复地缘风险冲击扰动投资者预期受到海外通胀高企主要央行加息紧缩等因素影响,各文远知行智驾平台即将登场,上汽依靠技术实力跻身智驾第一梯队2022年被业界称为智能驾驶商业化元年,自动驾驶逐渐进入技术与场景融合发展的新阶段,构建自动驾驶城市级通用化平台,启动逐城模式,为自动驾驶应用的落地提供加速度。近日,文远知行WeR支付宝新功能终于能给微信转账了昨天鸭鸭刷微博的时候看到一条热搜图片来源微博热搜刚看到的时候,鸭鸭愣了一下,难道支付宝和微信终于互通了吗?!据相关媒体报道,支付宝现在已经可以给微信QQ微博钉钉等平台用户转账,但不长安拿出诚意,车长4米8配ARHUD,188马力,新锐程PLUS不足10万这朋友超安逸家轿市场的竞争愈演愈烈,国产制造比合资制造表现得一贯亲民和厚道,简而言之就是更低的价格有更好的产品享受,当然也博得了消费者的喜爱占据有一定的市场份额,吉利帝豪长安逸动比不实用的宝宝用品有哪些其实说起来宝宝用品那肯定就是必备的啦,不过市面上的宝宝用品也是太多了,光看看都能挑花眼,在这其中当然有好用的也有不好用的存在。作为一个有经验的宝妈,给大家分享一下我心里觉得不实用的取名起名四大错误人名店铺名产品名名字是给人的第一印象,好的名字可以帮助人或一个企业给人产生好感今天重点讲如何避免取出不好的名字1。避免生僻字尽量不要在名字里面出现生僻难懂高冷的字,来凸显你的文化。比如一个烧烤餐厅为什么要努力?这是我见过最好的答案阅读本文前,点击上方卡片一键关注Episode02343为什么努力?想去的地方很远,想要的东西很贵,喜欢的人很优秀,父母的白发,朋友的约定,周围人的嘲笑,以及,天生傲骨。当什么都不