游戏服务器-日志系统

游戏服务器-日志系统

游戏服务器的日志系统主要分为业务日志程序日志。业务日志主要是给运营进行使用。程序日志则主要是给开发者调试日志,查找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大小也可以很快)

参考:

logback性能优化 AsyncAppender && FileAppender

万字详解logback

公司日志主件

你可能感兴趣的:(java,java)