用操作时间定位 Clash 相关日志段,依据的是:你在本地记下的操作时刻,以及内核只在控制台和控制页面、按 log-level 吐出的那一段输出。官方没有提供按连接自动裁剪日志段的配置项,时间窗要由操作者划定,再用级别含义判断这段里哪些行值得留下。
适用条件
适用于你能明确指出“几点几分几秒做了某次操作”(例如访问某地址、切换 mode、改策略),并需要回到内核输出里找出紧随其后的那段日志。不适用于 log-level: silent(没有任何输出可定位),也不适用于在 debug 下把前后数分钟的全部运行信息都当作“相关日志段”。
定位前先确认级别:error 只留下无法使用的错误,段最短;warning 加上不影响运行的错误;info 会掺入一般运行内容,段会变长;debug 尽可能输出所有信息,最容易把时间窗撑满。日志仅控制台与控制页面可见,定位时两处对照同一操作时刻。
用操作时间圈定日志段的步骤
第一步,操作前同步本地时钟的读数,写下开始时刻;操作结束立刻再写结束时刻。只做这一次操作,避免窗口里叠入无关流量。若目的是定位故障,优先把 log-level 设为 error 或 warning,减少一般运行行对窗口的污染。
第二步,到控制台或控制页面,只阅读开始时刻到结束时刻(可略向后留很短缓冲)之间的输出。这就是候选日志段。不要因为后面还有连续输出,就把窗口无限延长——info/debug 下内核会持续写出一般运行内容,拉长后的段落不再对应你的那一次操作。
第三步,在候选段内按官方定义做取舍:与“错误至无法使用”相符的行视为该次操作的故障相关段;“出错但不影响运行”的行仅在你使用 warning 时纳入;明显是一般运行的行,即使落在同一时间窗,也不算定位成功后的有效内容。
第四步,若窗口内既有 error 又有大量 info,不要整段保存。以操作时刻为中心,只摘符合当前级别目标的行,并在摘录上标注操作开始/结束时间,便于以后按同一方法复现对照。
定位失败时的下一步
窗口是空的:检查 silent;检查是否看错输出位置(必须是控制台或控制页面);检查操作是否实际发生在你记下的那几秒(时钟不准会整段错位)。
窗口太长、无法辨认哪一段属于这次操作:降低 log-level,从 debug/info 改为 error,把操作压缩成单次后重划窗口。仍太长则收紧缓冲,只保留开始时刻之后极短时间内的错误级输出。
窗口有字但对不上这次操作:同一秒或多秒内可以同时出现彼此无关的运行信息(尤其是 info/debug)。改用 error 再定位一次;若 error 段仍与操作语义不符,应认为该时间窗没有“无法使用”级事件,而不是继续扩大时间范围去“找齐”。