Ghost/ghost/errors
Kevin Ansfield 9fe54bb34e Added logging of slow {{#get}} helper uses (#10779)
no issue

- `{{#get}}` can slow down requests a lot if not used carefully, typically by using `limit="all"` or similar which can force a lot of data to be fetched and processed
- adds a warning log if we detect any `{{#get}}` helper call which takes longer than a certain threshold (default 200ms)
- allow log level and threshold to be configured via config to allow for different environments behaviours and requirements

New config options:
```
{
    "logging": {
        "slowHelper": {
            "level": "warn",
            "threshold": 200
        }
    }
}
```

Example output for `{{#get "tags" limit="all" order="name asc"}}` with a lot of tags:

```
[2019-06-07 10:35:52] WARN {{#get}} helper took 453ms to complete

{{#get}} helper took 453ms to complete

Error ID:
    062daed0-8910-11e9-8185-3b615ad8677d

Error Code:
    SLOW_GET_HELPER

Details:
    api:          v2.tagsPublic.browse
    apiOptions:
      order: name asc
      limit: all
    returnedRows: 1698
```
2020-03-25 10:24:33 +00:00
..
lib Added logging of slow {{#get}} helper uses (#10779) 2020-03-25 10:24:33 +00:00
test Removed old jshint/jscs rules 2020-03-25 10:24:33 +00:00
.eslintrc.js Prepared new errors package 2020-03-25 10:24:33 +00:00
index.js Prepared new errors package 2020-03-25 10:24:33 +00:00
LICENSE Prepared new errors package 2020-03-25 10:24:33 +00:00
package.json Prepared new errors package 2020-03-25 10:24:33 +00:00
README.md Prepared new errors package 2020-03-25 10:24:33 +00:00

Errors

Install

npm install @tryghost/errors --save

or

yarn add @tryghost/errors

Usage

Develop

This is a mono repository, managed with lerna.

Follow the instructions for the top-level repo.

  1. git clone this repo & cd into it as usual
  2. Run yarn to install top-level dependencies.

Run

  • yarn dev

Test

  • yarn lint run just eslint
  • yarn test run lint and tests

Copyright & License

Copyright (c) 2020 Ghost Foundation - Released under the MIT license.