西安网站建设制作熊掌号,福州建设企业网站,网站 邮箱功能 设置,广西建设网培训中心详解日志
相比起监控#xff0c;日志好理解的多#xff1a;在某个时间点向指定的地方输出一条信息#xff0c;里面记录着重要性、时间、地点和发生的事件#xff0c;这就是日志。 注意#xff0c;本文和 Rust 无关#xff0c;我们争取从一个中立的角度去介绍何为日志 日…详解日志
相比起监控日志好理解的多在某个时间点向指定的地方输出一条信息里面记录着重要性、时间、地点和发生的事件这就是日志。 注意本文和 Rust 无关我们争取从一个中立的角度去介绍何为日志 日志级别和输出位置
日志级别
日志级别是对基本的“滚动文本”式日志记录的一个重要补充。每条日志消息都会基于其重要性或严重程度分配到一个日志级别。例如对于某个程序“你的电脑着火了”是一个非常重要的消息而“无法找到配置文件”的重要等级可能就低一些但对于另外一些程序“无法找到配置文件” 可能才是最严重的错误会直接导致程序无法正常启动而“电脑着火”? 我们可能会记录为一条 Debug 日志(参见下文) 。
至于到底该如何定义日志级别这是仁者见仁的事情并没有一个约定俗成的方式就连很多大公司都无法保证自己的开发者严格按照它所制定的规则来输出日志。而下面是我认为的日志级别以及相关定义: Fatal: 程序发生致命错误祝你好运。这种错误往往来自于程序逻辑的严重异常例如之前提到的“无法找到配置文件”再比如无法分配足够的硬盘空间、内存不够用等。遇到这种错误建议立即退出或者重启程序然后记录下相应的错误信息 Error: 错误一般指的是程序级别的错误或者严重的业务错误但这种错误并不会影响程序的运行。一般的用户错误例如用户名、密码错误等不使用 Error 级别 Warn: 警告说明这条记录信息需要注意但是不确定是否发生了错误因此需要相关的开发来辨别下。或者这条信息既不是错误但是级别又没有低到 info 级别就可以用 Warn 来给出警示。例如某条用户连接异常关闭、无法找到相关的配置只能使用默认配置、XX秒后重试等 Info: 信息这种类型的日志往往用于记录程序的运行信息例如用户操作或者状态的变化再比如之前的用户名、密码错误用户请求的开始和结束都可以记录为这个级别 Debug: 调试信息顾名思义是给开发者用的用于了解程序当前的详细运行状况 例如用户请求详细信息跟踪、读取到的配置信息、连接握手发包(连接的建立和结束往往是 Info 级别)就可以记录为 Debug 信息
可以看出日志级别很多特别是 Debug 日志如果在生产环境中开启简直就是一场灾难每秒几百上千条都很正常。因此我们需要控制日志的最低级别将最低级别设置为 Info 时意味着低于 Info 的日志都不会输出对于上面的分级来说Debug 日志将不会被输出。
有些开发为了让特定的日志在控制上显示更明显还会为不同的级别使用不同颜色的文字。
输出位置
通常来说日志可以输出两个地方终端控制台和文件。对于前者我们还有一个称呼标准输出例如使用 println! 打印到终端的信息就是输出到标准输出中。
如果没有日志持久化的需求你只是为了调试程序建议输出到控制台即可。悄悄的说一句我们还可以为不同的级别设定不同的输出位置例如 Debug 日志输出到控制台既方便开发查看但又不会占用硬盘而 Info 和 Warning 日志可以输出到文件 info.log 中至于 Error、Fatal 则可以输出到 error.log 中。
但是如果大家以为只有输出到文件才能持久化日志那你就错了在后面的日志采集我们会详细介绍先来看看日志查看。
日志查看
关于如何查看日志相信大家都非常熟悉了常用的方式有三种(事实上可能也只有这三种):
在控制台查看即可以直接查看输出到标准输出的日志还可以使用 tail、cat、grep 等命令从日志文件中搜索查询或者以实时滚动的方式查看最新的日志最简单的进入到日志文件中进行字符串搜索或者从头到尾、从尾到头进行逐行查看在可视化界面上查看但是这个往往要配合日志采集工具将日志采集到 ElasticSearch 或者其它搜索平台、数据中然后再通过 kibana、grafana 等图形化服务进行搜索、查看最重要的是可以进行日志的聚合统计例如可以很方便的在 kibana 中查询满足指定条件的日志在某段时间内出现了多少次。
大家现在知道了可视化首先需要将日志集中采集起来那么该如何采集日志呢
日志采集
之前我们提到不是只有输出到文件才能持久化日志事实上输出到控制台也能持久化日志。
其中的秘诀就在于使用一个日志采集工具去从控制台的标准输出读取日志数据然后将读取到的数据发送到日志存储平台例如 ElasticSearch进行集中存储。当然在存储前还需要进行日志格式、数据的处理以便只保留我们需要的格式和日志数据。
最典型的就是容器或容器云环境的日志采集基本都是通过上面的方式进行的容器中的进程将日志输出到标准输出然后一个单独的日志采集服务直接读取标准输出中的日志再通过网络发送到日志处理、存储的平台。大家发现了吗这个流程完全不会在应用运行的本地或宿主机上存储任何日志所以特别适合容器环境
目前常用的日志采集工具有 filebeat、vector( Rust 开发功能强大性能非常高 ) 等它们都是以 agent 的形式运行在你的应用程序旁边( 在同一个 pod 或虚拟机上 )提供贴心的服务。
中心化日志存储
最后我们再来简单介绍下日志存储。提到存储首先不得不提的就是日志使用方式。
其实除了 Debug 的时候我们使用日志基本都是基于某个关键字进行搜索的将日志存储在各台主机上的硬盘文件中然后逐个去查询显然是非常非常低效的最好的方式就是将日志集中收集上来后存储在一个搜索平台中例如 ElasticSearch。
当然存储的时候肯定也不是简单的一行一行存储而是需要将一条日志的多个关键词切取出来然后以关键词索引的方式进行存储( 简化模型 )这样我们就可以在后续使用时通过关键词来搜索日志了。
推荐几款学习编程的免费平台
免费在线开发平台https://docs.ltpp.vip/LTPP/ 探索编程世界的新天地为学生和开发者精心打造的编程平台现已盛大开启这个平台汇集了近4000道精心设计的编程题目覆盖了C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等众多编程语言为您的编程学习之旅提供了一个全面而丰富的实践环境。 在这里您不仅可以查看自己的代码记录还能轻松地在云端保存和运行代码让编程变得更加便捷。平台还提供了私聊和群聊功能让您可以与同行们无障碍交流分享文件共同进步。不仅如此您还可以通过阅读文章、参与问答板块和在线商店进一步拓展您的知识边界。 为了提升您的编程技能平台还设有每日一题、精选题单以及激动人心的编程竞赛这些都是备考编程考试的绝佳资源。更令人兴奋的是您还可以自定义系统UI选择视频或图片作为背景打造一个完全个性化的编码环境让您的编程之旅既有趣又充满挑战。 免费公益服务器https://docs.ltpp.vip/LTPP-SHARE/linux.html 作为开发者或学生您是否经常因为搭建和维护编程环境而感到头疼现在您不必再为此烦恼因为一款全新的免费公共服务器已经为您解决了所有问题。这款服务器内置了多种编程语言的编程环境并且配备了功能强大的在线版VS Code让您可以随时随地在线编写代码无需进行任何复杂的配置。 随时随地云端编码 无论您身在何处只要有网络连接就可以通过浏览器访问这款公共服务器开始您的编程之旅。这种云端编码的便利性让您的学习或开发工作不再受限于特定的设备或环境。 丰富的编程语言支持 服务器支持包括C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等在内的多种主流编程语言满足不同开发者和学生的需求。无论您是初学者还是资深开发者都能找到适合自己的编程环境。 在线版VS Code高效开发 内置的在线版VS Code提供了与本地VS Code相似的编辑体验包括代码高亮、智能提示、代码调试等功能让您即使在云端也能享受到高效的开发体验。 数据隐私和安全提醒 虽然服务器是免费的但为了保护您的数据隐私和安全我们建议您不要上传任何敏感或重要的数据。这款服务器更适合用于学习和实验而非存储重要信息。 免费公益MYSQLhttps://docs.ltpp.vip/LTPP-SHARE/mysql.html 作为一名开发者或学生数据库环境的搭建和维护往往是一个复杂且耗时的过程。但不用担心现在有一款免费的MySQL服务器专为解决您的烦恼而设计让数据库的使用变得简单而高效。 性能卓越满足需求 虽然它是免费的但性能绝不打折。服务器提供了稳定且高效的数据库服务能够满足大多数开发和学习场景的需求。 在线phpMyAdmin管理更便捷 内置的在线phpMyAdmin管理面板提供了一个直观且功能强大的用户界面让您可以轻松地查看、编辑和管理数据库。 数据隐私提醒安全第一 正如您所知这是一项公共资源因此我们强烈建议不要上传任何敏感或重要的数据。请将此服务器仅用于学习和实验目的以确保您的数据安全。 免费在线WEB代码编辑器https://docs.ltpp.vip/LTPP-WEB-IDE/ 无论你是开发者还是学生编程环境的搭建和管理可能会占用你宝贵的时间和精力。现在有一款强大的免费在线代码编辑器支持多种编程语言让您可以随时随地编写和运行代码提升编程效率专注于创意和开发。 多语言支持无缝切换 这款在线代码编辑器支持包括C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#在内的多种编程语言无论您的项目需要哪种语言都能在这里找到支持。 在线运行快速定位问题 您可以在编写代码的同时即时运行并查看结果快速定位并解决问题提高开发效率。 代码高亮与智能提示 编辑器提供代码高亮和智能提示功能帮助您更快地编写代码减少错误提升编码质量。 免费二维码生成器https://docs.ltpp.vip/LTPP-QRCODE/ 二维码QR Code是一种二维条码能够存储更多信息并且可以通过智能手机等设备快速扫描识别。它广泛应用于各种场景如 企业宣传 企业可以通过二维码分享公司网站、产品信息、服务介绍等。 活动推广 活动组织者可以创建二维码参与者扫描后可以直接访问活动详情、报名链接或获取电子门票。 个人信息分享 个人可以生成包含联系方式、社交媒体链接、个人简历等信息的二维码。 电子商务 商家使用二维码进行商品追踪、促销活动、在线支付等。 教育 教师可以创建二维码学生扫描后可以直接访问学习资料或在线课程。 交通出行 二维码用于公共交通的票务系统乘客扫描二维码即可进出站或支付车费。 功能强大的二维码生成器通常具备用户界面友好操作简单即使是初学者也能快速上手和生成的二维码可以在各种设备和操作系统上扫描识别的特点。