Verbose Logging Will Disturb Your Sleep
当我遇到一个已经开发并在生产环境跑了一段时间的系统时,我最怕的就是那个脏日志。你知道我在说什么:当点击web页面上那个单连接,系统就会反馈犹如潮水般的日志消息出来。可过多的日志根本没什么用。
如果你的系统想我一样,你完成工作后,其他人则刚刚开始。系统开发完成后,希望它能活得久一点、富有生命力一点去服务客户(如果你足够幸运)。你怎么知道当系统在生产环境中是否会挂掉呢,你又该如何处理呢?
可能有人会为你监视系统,或者可能是你自己监视它。不管是哪种方式,日志都可能是监视的一部分。如果出现突发状况,你不得不起床应对,你当然希望确保对此有个良好的缘由。如果我的系统挂了,我也希望如此。但如果它只是出了点小问题,我更喜欢回到美梦里。
对于很多系统,第一个标志是将错误消息写入某些日志。通常,这些就是错误日志。所以请帮自己一个忙:在白天的时候就要确保哪些内容如果记录在错误日志中,你就会在半夜被其他人的电话叫醒。如果你可以在你的测试系统上模拟负载,并看到一个无噪音的错误日志也能很好地表明你的系统相当健壮——如果看不到,那就早点发出警告。
分布式系统的复杂度还要再增加一级。你必须决定如何处理外部依赖的失败。如果你的系统非常分散,这种状况就会经常发生。要确保你的日志策略要将其考虑在内。
一般来说,最好的迹象就是所有事情都正确,消息也在低优先级快乐地滴答。对于每个应用程序的事件,我都能掌握对应级别的日志消息。
日志混乱表明系统一旦投入生产环境将很难控制。如果你不希望任何事情都展现在错误日志中。那当出现某些状况后,知道下一步做什么就会变得更容易。