https://github.com/cameronhunter/debug-logger
A TypeScript decorator for classes that logs all method usages
https://github.com/cameronhunter/debug-logger
Last synced: 10 months ago
JSON representation
A TypeScript decorator for classes that logs all method usages
- Host: GitHub
- URL: https://github.com/cameronhunter/debug-logger
- Owner: cameronhunter
- License: mit
- Created: 2022-10-18T18:21:33.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-18T18:50:26.000Z (over 3 years ago)
- Last Synced: 2025-06-25T16:04:08.533Z (12 months ago)
- Language: TypeScript
- Size: 45.9 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @cameronhunter/debug-logger
A TypeScript decorator for classes that logs all method usages using the [`debug`](https://www.npmjs.com/package/debug)
package. Logging is enabled using the `DEBUG` environment variable – see the
[`debug`](https://www.npmjs.com/package/debug) package for details.
## Examples
### Simple usage
The decorator can be used directly and it will log to a namespace matching the class name it is decorating. An execution
of `new HelloWorld().main('World')` below will result in `HelloWorld main("World");` being logged.
```ts
import DebugLogging from '@cameronhunter/debug-logger';
@DebugLogging
class HelloWorld {
main(name: string) {
console.log(`Hello ${name}!`);
}
}
```
### Using a custom namespace
The decorator also accepts an optional namespace that will be used in addition to the class name it is decorating. An
execution of `new HelloWorld().main('World')` below will result in `my-debug-namespace:HelloWorld main("World");` being
logged.
```ts
import DebugLogging from '@cameronhunter/debug-logger';
@DebugLogging('my-debug-namespace')
class HelloWorld {
main(name: string) {
console.log(`Hello ${name}!`);
}
}
```
### Configuring a shared logger
The decorator can be preconfigured and shared. For example, we can configure a debug logger with a custom namespace and
export it for use around an application. An execution of `new HelloWorld().main('World')` below will result in
`my-namespace:HelloWorld main("World");` being logged.
```ts
import DebugLogger from '@cameronhunter/debug-logger';
const CustomLogger = DebugLogger('my-namespace');
@CustomLogger
class HelloWorld {
main(name: string) {
console.log(`Hello ${name}!`);
}
}
```