<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘锦的空间 &#187; 日志</title>
	<atom:link href="https://www.phppan.com/tag/%e6%97%a5%e5%bf%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.phppan.com</link>
	<description>SaaS SaaS架构 团队管理 技术管理 技术架构 PHP 内核 扩展 项目管理</description>
	<lastBuildDate>Sun, 12 Apr 2026 03:47:23 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>研发效率提升的秘诀：日志管理的系统化策略</title>
		<link>https://www.phppan.com/2023/12/the-secret-to-improving-rd-efficiency-a-systematic-strategy-for-log-management/</link>
		<comments>https://www.phppan.com/2023/12/the-secret-to-improving-rd-efficiency-a-systematic-strategy-for-log-management/#comments</comments>
		<pubDate>Sat, 16 Dec 2023 14:09:13 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[架构和远方]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[日志]]></category>
		<category><![CDATA[研发效能]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=2133</guid>
		<description><![CDATA[你是否也遇到过线上出问题了，查找日志，发现都是 ERROR 日志？ 你是否也遇到过虽然有日志，但是日志实在太多 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否也遇到过线上出问题了，查找日志，发现都是 ERROR 日志？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否也遇到过虽然有日志，但是日志实在太多，在茫茫日志中无法有效地定位到问题？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过要去排查前人写的代码产生的 BUG，却还需要把先把相关的代码过一遍，找到相关日志点，再去搜索日志？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过日志越来越多，不同的人都在打，有些日志没有用了，还是在不停的打？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过奇怪类型的日志，甚至相互冲突以至于无法定位问题？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">你是否遇到过因为打个日志，导致客户端崩溃？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">……</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器"><strong style="color: #ff3502;">当日志不在大家的视野中</strong>，凭着个人的喜好去打，去定位问题，最终整个日志就会变成一个不断膨胀的怪物，变成大家使用起来都感到困扰和无助的混乱池塘。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">当日志的生成和使用没有统一的规范和标准，每个人都按照自己的方式和喜好来记录和查找日志，日志的内容和格式就会变得五花八门，导致理解和分析日志的难度大大增加。另外，无效的、重复的、甚至是错误的日志会像野草一样无序地生长，使得日志的数量越来越大，而有效的、有用的日志则可能会被淹没在这个日志的海洋之中。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">此时，我们需要建立一套有效的日志管理策略，包括设定清晰的日志记录标准，实施有效的日志标准管理，优化日志存储和清理策略等。只有这样，我们才能把这个日志怪物驯化，使得日志成为我们解决问题的有力工具，而不是一种困扰。</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">从过往的经历和上面描述的这些问题里面我们洞察了如下的问题点：</p>
<blockquote style="color: #5b5b5b;" data-tool="mdnice编辑器">
<ol class="list-paddingleft-1" style="color: black;">
<li>
<section style="color: #010101;">日志规范管理的问题</section>
</li>
<li>
<section style="color: #010101;">日志无序增长的问题</section>
</li>
<li>
<section style="color: #010101;">日志劣化和无人维护的问题</section>
</li>
<li>
<section style="color: #010101;">日志导致的线上问题</section>
</li>
</ol>
</blockquote>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">那么我们如何有效的去解决这些问题呢？</p>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">大概有如下六个步骤：制定标准、系统化实现标准管理、实现统一的日志 SDK 接入、使用统一的日志管理系统、定期复盘标准并落地日志的生命周期管理。具体如下：</p>
<ol class="list-paddingleft-1" style="color: #000000;" data-tool="mdnice编辑器">
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">制定标准</strong>：日志的标准应包括但不限于如下几个方面：</p>
</section>
<ul class="list-paddingleft-1">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志级别</strong>：定义不同级别的日志，如 DEBUG、INFO、WARN、ERROR 等，以便于过滤和查找。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志格式</strong>：定义统一的日志格式，包括时间戳、日志级别、日志来源、日志内容、错误堆栈等信息。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志内容</strong>：明确记录哪些信息，如请求信息、业务数据、错误信息等。避免记录敏感信息，如用户密码、身份证号等。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志保留时间</strong>：根据日志的重要性和存储成本，设定不同级别日志的保留时间。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">是否废弃</strong>：类似于接口的 Deprecated 注解，废弃的接口在定时间内会停止上报，并无法查询。</section>
</li>
</ul>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">系统化实现标准管理</strong>：以系统的方式将标准、SDK 下载管理起来，并且和集成的日志系统关联上，主要包括以下三点：</p>
</section>
<ul class="list-paddingleft-1">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">标准管理</strong>：实现日志标准的管理和维护，包括日志的级别、字段、格式等。此外，也应当支持标记废弃等生命周期相关的字段，以确保所有人员都能了解到哪些标准不再使用。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">SDK 下载</strong>：提供一个 SDK 的下载功能，允许开发同学根据需要下载适合特定平台或语言的日志 SDK。这种 SDK 应当已经集成了日志标准，以确保开发者在使用 SDK 时能够自动地遵循标准并上报到统一的日志平台。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">日志系统跳转</strong>：和真正的日志系统（如 ELK）打通。如提供一个默认的跳转链接，可以直接跳转到 ELK 的对应界面，查看满足这些参数的日志。</section>
</li>
</ul>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">实现统一的日志 SDK 接入</strong>：提供一个统一的日志 SDK，用于记录和上报日志。这样可以简化开发同学的工作，只需要调用 SDK 提供的接口，就可以按照标准记录日志。而且，SDK 可以处理一些公共的日志任务，如添加时间戳、格式化日志、<strong style="color: #ff3502;">处理错误堆栈、防止打日志时崩溃</strong>等。<strong style="color: #ff3502;">SDK 应该是跨平台、跨语言的。</strong></p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">使用统一的日志管理系统</strong>：使用一个专门的日志管理系统，来收集、存储、查询和分析日志。这样可以提供一致的日志服务，提高日志的可用性和可维护性。例如，可以使用 ELK（包括 Elasticsearch、Logstash、Kibana）作为日志管理系统。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">定期复盘标准</strong>：随着业务和技术的发展，可能需要更新日志标准。因此，需要定期复盘标准，看是否需要改进。定期复盘标准的频率可能会因为具体情况而变化。如果业务和技术环境比较稳定，那么可能每年复盘一次就足够了。如果环境变化比较快，那么可能需要每季度甚至每月复盘一次。</p>
</section>
</li>
<li>
<section style="color: #010101;">
<p style="color: #3f3f3f;"><strong style="color: #ff3502;">日志的废弃管理</strong>：日志的生命周期管理包括日志的生成、收集、存储、查询、分析和废弃等步骤。其中，废弃管理是一项非常重要的任务，因为它直接关系到日志系统的健康和效率。日志的废弃管理可能包括以下几个方面：</p>
</section>
<ul class="list-paddingleft-1">
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">过期删除</strong>：设置日志的保留期限，过期的日志将被自动删除。这个期限可能会根据日志的级别和重要性而变化。比如，ERROR 级别的日志可能需要保留一个月，而 DEBUG 级别的日志只需要保留 3 天。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">空间限制</strong>：设置日志的存储空间限制，当存储空间达到一定的阈值时，最旧的日志将被自动删除，以释放空间。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">废弃标识</strong>：为废弃的日志添加标识，这样在查询和分析日志时可以忽略这些日志。同时，废弃的日志应当尽快被删除，以节省存储空间。</section>
</li>
<li>
<section style="color: #010101;"><strong style="color: #ff3502;">废弃通知</strong>：当一个日志标准被废弃时，需要通知所有相关的人员，以避免他们继续使用这个标准。同时，也需要更新日志 SDK 和管理系统，使它们不再支持这个废弃的标准。</section>
</li>
</ul>
</li>
</ol>
<p style="color: #3f3f3f;" data-tool="mdnice编辑器">回顾一下，我们制定了一套<strong style="color: #ff3502;">清晰的日志标准</strong>，随后通过<strong style="color: #ff3502;">系统化的管理方式</strong>实施和维护这些标准。借助<strong style="color: #ff3502;">统一的日志 SDK 和日志管理系统</strong>，我们可以提升日志生成和使用的效率。这样，日志便从混乱的信息池转化为强大的问题解决工具，从而<strong style="color: #ff3502;">提升整体的研发效率</strong>。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2023/12/the-secret-to-improving-rd-efficiency-a-systematic-strategy-for-log-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
