现在根据服务的详细级别控制在系统日志中记录哪个脚本

Controlling which script is logged in system logs based on verbosity level in service now

我所在的单位使用service 现在,我刚加入团队,我的团队希望我现在研究一下登录服务。

他们想要的只是在根据脚本的详细级别在服务器上编写脚本时控制脚本的日志记录

我对日志记录的理解是服务器上发生的进程类型,即

•如果脚本语法不正确,它会在日志消息中记录为警告,说明编译错误

•如果某件事成功运行或一个过程完成,它会记录为 INFO 以及发生的事情的消息

•发生类似的调试日志记录,(虽然我对此可能是错误的)

我尝试在 service now wiki 上搜索,我找到的一种方法是 gs.log()

我尝试了 运行 一些测试脚本来在 System Definition > Scripts - Background

中记录信息

我试过的一些脚本

var gl = new GSLog("com.snc.sla.tasksla.log", "TaskSLA"); 
gl.logErr("This is an error message");


var gl = new GSLog("com.snc.sla.tasksla.log", "TaskSLA"); 
gl.logWarning("This is a warning message");

gs.info("This is an info log");
gs.debug("This is a debug log");

然后在日志中搜索table系统日志>系统日志>全部

所有看到的是我 运行 的脚本以 INFO 级别作为整体记录,如果脚本有语法错误,它会以 WARNING 级别

记录相同

为什么它不逐行记录脚本?

还有什么方法可以让我现在根据详细级别告诉服务它应该记录什么脚本?

如果您使用的是 Fuji 版本或更高版本(它仍然很新,所以您可能不是),实际上有一个全新的日志记录 api 更直观一些,它是应用程序-基于。以下是 API:

的文档

冗长

有 4 个级别的详细程度,从最不详细到最详细,它们是:

error (gs.error)
warn (gs.warn)
info (gs.info)
debug (gs.debug)

...这意味着将特定应用程序的日志级别设置为 "info" 会给你信息+警告+错误,但不会调试。

...会话调试的详细程度为 debug,因此任何级别的日志详细程度都将包含在会话调试输出中,仅适用于在启用会话调试的会话中调试的应用程序。

用于记录详细信息的 属性 是(替换为您的应用程序名称):

<APP_NAME>.logging.verbosity // off -> error -> warn -> info -> debug

目的地

"db" 的日志目标将在所需的日志记录详细程度内将日志消息路由到 table "syslog_app_scope",它扩展了系统日志。这个新的 table 添加了用于 App/Scope 发布日志的字段以及链接到调用日志记录的脚本的源脚本字段 API (当我们弄清楚时,目前仅适用于业务规则和脚本包含)。当目标设置为 "db" 时,日志也会转到文件系统。

"file" 的日志目标将记录到节点的文件系统日志而不广播到日志侦听器(脚本后台情况除外)

目的地的 属性 是:

<APP_NAME>.logging.destination // none -> file -> db (implies file also)

使用示例

这个 API 的消费者(来自 JavaScript)应该能够做到:

gs.debug(message [, parameters]) -在调试级别详细程度发出日志消息

gs.info(message [, parameters]) -发出信息级别详细程度的日志消息

gs.warn(message [, parameters]) -发出警告级别详细程度的日志消息

gs.error(message [, parameters]) -发出错误级别详细程度的日志消息

此日志记录 API 支持 java MessageFormat 占位符替换模式 目前最多支持 5 个 "varargs" 占位符参数,超过 5 个需要指定为单个 java 脚本数组参数 所有这些都是合法的调用:

gs.info("Here's a log message from me"); // no params
gs.info("Here's a log message from {0}", myName); // single non array param
gs.info("Here's a log message from {0}.{1}", myFirstName, myLastName); // multiple "varargs" params (up to 5!)
gs.info("Here's a log message from {0}.{1}", [myFirstName, myLastName]); // array of n-number of params (no upper bounds)