{"id":24755150,"url":"https://github.com/gravity-ui/ui-logger","last_synced_at":"2025-03-23T06:13:44.875Z","repository":{"id":65555719,"uuid":"518809042","full_name":"gravity-ui/ui-logger","owner":"gravity-ui","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-02T00:34:18.000Z","size":260,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-01T10:38:10.637Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gravity-ui.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-28T10:56:36.000Z","updated_at":"2023-02-01T15:27:40.000Z","dependencies_parsed_at":"2023-02-17T17:31:20.692Z","dependency_job_id":null,"html_url":"https://github.com/gravity-ui/ui-logger","commit_stats":null,"previous_names":["yandex-cloud/ui-logger"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravity-ui%2Fui-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravity-ui%2Fui-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravity-ui%2Fui-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravity-ui%2Fui-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gravity-ui","download_url":"https://codeload.github.com/gravity-ui/ui-logger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245061380,"owners_count":20554563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-28T12:36:35.388Z","updated_at":"2025-03-23T06:13:44.837Z","avatar_url":"https://github.com/gravity-ui.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UI logger\n\n## Usage\n\n```bash\nnpm i @gravity-ui/ui-logger\n```\n\n```ts\nimport logger from '@gravity-ui/ui-logger';\n\ntry {\n  // logger.log(message: string, extraData?: Record\u003cstring, unknown\u003e);\n  logger.log('Info event', {extraInfo: 'Extra data'});\n} catch (error) {\n  // logger.logError(message: string, error?: Error, extraData?: Record\u003cstring, unknown\u003e);\n  logger.logError('Error event', error, {extraError: 'Extra data'});\n}\n\n// get all recorded logs\nconst logs = logger.getLogs();\n```\n\n## Named loggers\n\nBy default, logs are written to `namespace` with the name `default`.\n\nPossible reasons to create your own `namespace`:\n\n- Logically split logs of a large application.\n- For certain errors, you need a custom [error parser](#settings).\n\n```ts\nimport logger from '@gravity-ui/ui-logger';\n\n// Returns or creates a new logger instance with the name my_namespace\nconst namedLogger = logger.get('my_namespace');\nnamedLogger.log('Will record to scope my_namespace');\n\nconst anotherOneLogger = namedLogger.get('another_one');\nnamedLogger.log('Will record to scope another_one');\n```\n\n## Settings\n\nThe settings can be either global for all loggers or local for a specific logger.\n\n```ts\nimport logger from '@gravity-ui/ui-logger';\n\ntype DefaultSettings = {\n  // The number of log records for each namespace. By default, 1000.\n  bufferSize: number;\n  // Function for error parsing in logError.\n  parseError: (error: Error) =\u003e Record\u003cstring, unknown\u003e;\n  // Print log, logError to the console. By default, true.\n  printLog: boolean;\n  // Callback function that is called every time logError is called with the same arguments as logError\n  logErrorCallback: ((message: string, error?: Error, data?: ExtraData) =\u003e void) | null;\n};\n\n// will change the number of records for all loggers\nlogger.setDefault({bufferSize: 200});\n\ntype LoggerSettings = {\n  bufferSize: number;\n  parseError: (error: Error) =\u003e Record\u003cstring, unknown\u003e;\n  logErrorCallback: ((message: string, error?: Error, data?: ExtraData) =\u003e void) | null;\n};\n\nconst namedLogger = logger.get('name');\nfunction namedParseError(error: Error) {\n  return {message: error.message, meta: {}};\n}\n\n// will change ParseError only for logger `name`\nnamedLogger.setSettings({parseError: namedParseError});\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravity-ui%2Fui-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgravity-ui%2Fui-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravity-ui%2Fui-logger/lists"}