游戏服务器-日志系统
游戏服务器的日志系统主要分为业务日志和程序日志。业务日志主要是给运营进行使用。程序日志则主要是给开发者调试日志,查找bug使用
扩展:后续可以加上性能检测日志等。
业务日志
业务日志主要是给运营进行使用。
程序日志
程序日志则主要是给开发者调试日志,查找bug使用。为了使日志更加的客观,通常按照不同的系统模块来输出对应模块的程序日志文件,方便后续线上来进行查找bug。
则程序日志可以继续细分:系统模块日志、架构代码异常日志
-
系统模块日志:
游戏有需要功能模块:活动、玩家、登录以及各种游戏逻辑模块,如果都统一的讲日志简单统一输出到统一的log的文件中,对于后续排查线上的问题来说会非常麻烦。所以输出结构会改成各个模块都有独立的log文件来进行存储,排查对应模块的问题只需要查找对应模块的日志文件
-
架构代码异常日志:
该部分的代码通常是底层架构的异常记录,例如线程模型的异常,事件组件的异常。
日志输出目录结构
— logs
—dayLog
—${dataTime}
—error
—root
—module01.${i}.log
—module02.${i}.log
—module03.${i}.log
—player
—player.log.${dataTime}
实现原理
原始方法:通过不断的在logback.xml文件中配置各个模块的输出信息。
对于游戏服务器来说每新增一个游戏模块就得在logback.xml中加新的配置。这样的做法太不优雅。
可通过代码配置,通过枚举来动态添加即刻。
一个优秀的日志组件就必须可以通过代码动态的添加各种日志模块,输出到各个模块的日志文件中。并且还需要照顾到高并发情况下多个日志记录的问题。通过cache方案异步进行记录,也可通过buffer方案来解决,这两种方案主要看日志的输出目的地,所需要时间(例如本地的合理设置buffer大小也可以很快)
参考: