From 073318df6fc1501793d4698b576626bf91fa14f1 Mon Sep 17 00:00:00 2001 From: Rohin Srivastava Date: Tue, 18 Apr 2023 12:31:43 +0530 Subject: [PATCH] feat: adding logger library for ask-developer use --- ask-sdk-core/lib/index.ts | 1 + ask-sdk-core/lib/skill/CustomSkill.ts | 3 +- ask-sdk-core/lib/util/Logger.ts | 67 +++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 ask-sdk-core/lib/util/Logger.ts diff --git a/ask-sdk-core/lib/index.ts b/ask-sdk-core/lib/index.ts index bed7d15e..689b0a84 100644 --- a/ask-sdk-core/lib/index.ts +++ b/ask-sdk-core/lib/index.ts @@ -34,6 +34,7 @@ export { CustomSkillBuilder } from './skill/factory/CustomSkillBuilder'; export { CustomSkillFactory } from './skill/factory/CustomSkillFactory'; export { SkillBuilders } from './skill/SkillBuilders'; export { CustomSkillConfiguration as SkillConfiguration } from './skill/CustomSkillConfiguration'; +export { Logger, MetricsType } from './util/Logger'; export { getViewportDpiGroup, getViewportOrientation, diff --git a/ask-sdk-core/lib/skill/CustomSkill.ts b/ask-sdk-core/lib/skill/CustomSkill.ts index a98d92c3..6e7645c3 100644 --- a/ask-sdk-core/lib/skill/CustomSkill.ts +++ b/ask-sdk-core/lib/skill/CustomSkill.ts @@ -30,6 +30,7 @@ import { PersistenceAdapter } from '../attributes/persistence/PersistenceAdapter import { HandlerInput } from '../dispatcher/request/handler/HandlerInput'; import { ResponseFactory } from '../response/ResponseFactory'; import { CustomSkillConfiguration } from './CustomSkillConfiguration'; +import { Logger } from '../util/Logger'; import ServiceClientFactory = services.ServiceClientFactory; import ApiClient = services.ApiClient; @@ -99,7 +100,7 @@ export class CustomSkill implements Skill { return { version : '1.0', response, - userAgent : UserAgentManager.getUserAgent(), + userAgent : UserAgentManager.getUserAgent() + Logger.getFeatures(), sessionAttributes : requestEnvelope.session ? input.attributesManager.getSessionAttributes() : undefined, }; } diff --git a/ask-sdk-core/lib/util/Logger.ts b/ask-sdk-core/lib/util/Logger.ts new file mode 100644 index 00000000..fac54722 --- /dev/null +++ b/ask-sdk-core/lib/util/Logger.ts @@ -0,0 +1,67 @@ +/** + * Logger to log SDK interfaces and functions used by a skill +*/ + +export enum MetricsType{ + InSDK = 1, + Component = 2 +} + +export abstract class Logger{ + private constructor(){} + + /** + * Set of features used by the skill from SDK + */ + private static inSDKfeatures: Set = new Set(); + + + /** + * Set of components used by a skill + */ + private static componentList: Set = new Set(); + + /** + * Method to log the feature + */ + public static log(featureName: string, type: MetricsType){ + if(type==1){ + Logger.inSDKfeatures.add(featureName); + } + else if(type==2){ + Logger.componentList.add(featureName); + } + } + + /** + * Method to get the components used by the skill + */ + private static getComponentList(): string{ + const componentList = Array.from(Logger.componentList).toString(); + if(!componentList.length){ + return ''; + } + const log = ' components:['+componentList+']'; + return log; + } + + /** + * Method to get the SDK features used by the skill + */ + private static getInSDKfeatures(): string{ + const inSDKfeatures = Array.from(Logger.inSDKfeatures).toString(); + if(!inSDKfeatures.length){ + return ''; + } + const log = ' sdk-dependencies:['+inSDKfeatures+']'; + return log; + } + + /** + * Method to get all the features used by the skill + */ + public static getFeatures(): string{ + const log = Logger.getInSDKfeatures() + Logger.getComponentList(); + return log; + } +} \ No newline at end of file