Design an extensible logger that supports multiple independent log handlers, such as console, truncation, and in-memory storage, while allowing new handlers to be added easily.
The logger should also support keyword search across searchable handlers, returning each matching log message only once even if it matches multiple keywords.
这道题考察的是一个可扩展的日志系统设计。核心是把日志输出能力拆分成多个独立的 handler,例如控制台输出、截断保存、内存存储等,并通过统一的接口方便后续新增 handler。同时,系统还需要支持按关键词检索可搜索的 handler,且同一条日志即使同时命中多个关键词也只能返回一次。解题时通常会用到面向对象设计、发布订阅 / 组合模式、去重集合以及高效的关键词索引或遍历策略。