记录服务器消息 (Amazon GameLift Servers 实时) - Amazon GameLift Servers
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录服务器消息 (Amazon GameLift Servers 实时)

您可以从您的服务器中捕获自定义服务器消息 Amazon GameLift Servers 实时记录在日志文件中。要了解有关自定义服务器日志记录的信息,请参阅记录服务器消息(自定义服务器)

您可以将不同类型的消息输出到日志文件中(请参阅在服务器脚本中记录消息)。除了您的自定义消息外,您的 Amazon GameLift Servers 使用相同的消息类型实时输出系统消息,并写入相同的日志文件。您可以调整实例集的日志记录级别,以减少服务器生成的日志消息量(请参阅调整日志记录级别)。

重要

每个游戏会话的日志文件大小有限制(请参阅 Amazon GameLift Servers中的端点和配额 Amazon Web Services 一般参考)。当游戏会话结束时,Amazon GameLift Servers 将服务器日志上传到亚马逊简单存储服务 (Amazon S3) Service。Amazon GameLift Servers 不会上传超过限制的日志。日志的增长速度可能非常快,并且会超过大小限制。您应该监控日志,将日志输出限制为仅显示必要的消息。

在服务器脚本中记录消息

你可以在脚本中为你输出自定义消息 Amazon GameLift Servers 实时。可以使用以下步骤将服务器消息发送到日志文件:

  1. 创建一个变量来保存对记录器对象的引用。

    var logger;
  2. init() 函数中,从会话对象中获取记录器并将其分配给您的记录器变量。

    function init(rtSession) { session = rtSession; logger = session.getLogger(); }
  3. 在记录器上调用相应的函数以输出消息。

    调试消息

    logger.debug("This is my debug message...");

    信息性消息

    logger.info("This is my info message...");

    警告消息

    logger.warn("This is my warn message...");

    错误消息

    logger.error("This is my error message...");

    致命错误消息

    logger.fatal("This is my fatal error message...");

    客户体验致命错误消息

    logger.cxfatal("This is my customer experience fatal error message...");

有关脚本中日志语句的示例,请参阅Amazon GameLift Servers 实时脚本示例

日志文件中的输出指示消息的类型(DEBUGINFOWARNERRORFATALCXFATAL),如示例日志中的以下几行所示:

09 Sep 2021 11:46:32,970 [INFO] (gamelift.js) 215: Calling GameLiftServerAPI.InitSDK...
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 220: GameLiftServerAPI.InitSDK succeeded
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 223: Waiting for Realtime server to start...
09 Sep 2021 11:46:33,15 [WARN] (index.js) 204: Connection is INSECURE. Messages will be sent/received as plaintext.

获取服务器日志

当游戏会话结束时,Amazon GameLift Servers 自动将日志存储在 Amazon S3 中并将其保留 14 天。您可以使用 GetGameSessionLogUrl API 调用来获取游戏会话的日志位置。使用 API 调用返回的 URL 下载日志。

调整日志记录级别

日志的增长速度可能非常快,并且会超过大小限制。您应该监控日志,将日志输出限制为仅显示必要的消息。对于 Amazon GameLift Servers 实时,您可以通过在队列的运行时配置中提供表单中的参数来调整日志级别loggingLevel:LOGGING_LEVEL,其中LOGGING_LEVEL是以下值之一:

  1. debug

  2. info(默认值)

  3. warn

  4. error

  5. fatal

  6. cxfatal

此列表按从最不严重(debug)到最严重(cxfatal)的顺序排列。您设置了单个 loggingLevel,服务器将只记录该严重性级别或更高严重级别的消息。例如,设置 loggingLevel:error 将使实例集中的所有服务器仅向日志写入 errorfatalcxfatal 消息。

可以在创建实例集时或运行之后为实例集设置日志记录级别。在实例集运行后更改其日志记录级别只会影响更新后创建的游戏会话日志。任何现有游戏会话的日志都不会受到影响。如果您在创建实例集时未设置日志记录级别,则您的服务器会将日志记录级别默认设置为 info。有关设置日志记录级别的说明,请参阅以下部分。

在创建时设置日志级别 Amazon GameLift Servers 实时舰队(控制台)

按照创建一个 Amazon GameLift Servers 托管 EC2 舰队中的说明创建您的实例集,并添加以下内容:

  • 进程管理步骤的服务器进程分配子步骤中,提供日志记录级别键-值对(例如 loggingLevel:error)作为启动参数的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数(例如 loggingLevel:error +map Winter444)分开。

在创建时设置日志级别 Amazon GameLift Servers 实时舰队 ()Amazon CLI

按照创建一个 Amazon GameLift Servers 托管 EC2 舰队中的说明创建您的实例集,并添加以下内容:

  • create-fleet--runtime-configuration 参数中,提供日志记录级别键-值对(例如 loggingLevel:error)作为Parameters的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数分开。请参见以下示例:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"
为跑步设置日志级别 Amazon GameLift Servers 实时舰队(控制台)

按照中的说明使用以下命令更新您的机队 更新一个 Amazon GameLift Servers 舰队配置 Amazon GameLift Servers 控制台,新增以下内容:

  • 编辑实例集页面的服务器进程分配下,提供日志记录级别键-值对(例如 loggingLevel:error)作为启动参数的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数(例如 loggingLevel:error +map Winter444)分开。

为跑步设置日志级别 Amazon GameLift Servers 实时舰队 ()Amazon CLI

按照中的说明更新一个 Amazon GameLift Servers 舰队配置使用更新您的舰队 Amazon CLI,并添加以下内容:

  • update-runtime-configuration--runtime-configuration 参数中,提供日志记录级别键-值对(例如 loggingLevel:error)作为Parameters的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数分开。请参见以下示例:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"