https://github.com/khulnasoft/edge-logger
https://github.com/khulnasoft/edge-logger
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/khulnasoft/edge-logger
- Owner: khulnasoft
- License: mit
- Created: 2023-11-10T13:10:56.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-18T00:17:20.000Z (about 1 year ago)
- Last Synced: 2025-02-01T02:16:41.769Z (8 months ago)
- Language: TypeScript
- Size: 583 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Kengine Edge Logger
[![Documentation][docs_badge]][docs]
[![Latest Release][release_badge]][release]
[![License][license_badge]][license]OpenTelemetry aware logger for Edge Runtimes.
Fully tested with:
- Cloudflare Workers
- Cloudflare Pages Functions
- Vercel Edge Functions## Usage
```bash
npm i @khulnasoft/edge-logger
```### Usage
```typescript
import { KengineLogger } from '@khulnasoft/edge-logger'export interface Env {
KENGINE_API_KEY: string
}export default {
async fetch(req: Request, env: Env, ctx: ExecutionContext): Promise {
const logger = new KengineLogger({
ctx,
apiKey: env.KENGINE_API_KEY,
service: 'my-service',
dataset: 'cloudflare',
namespace: 'my-worker-name',
requestId: crypto.randomUUID(),
})// Use the Kengine Edge logger to log
logger.info('Hello, World!', { foo: 'bar' })// Make sure to add this to flush the logs to Kengine before the return statement
ctx.waitUntil(logger.flush());
return new Response('Request Completed');
}
}
```> Note the `ctx.waitUntil(logger.flush());` before the return statement of the function.
## Supported methods
```typescript
logger.info("This is an informational message", { payload: { foo: "bar" } });
logger.warn("This is a warning message", { payload: { foo: "bar" } });
logger.error("This is an error message", { payload: { foo: "bar" } });
```## Local Development
To get logs appropriately formatted in your local development environment using wrangler, add the `IS_LOCAL_MODE` environment variable to your `.dev.var` file.
```.env
IS_LOCAL_MODE=1
```And use it when configurting the `KengineLogger`.
```typescript
export default {
async fetch(req: Request, env: Env, ctx: ExecutionContext): Promise {
const logger = new KengineLogger({
ctx,
apiKey: env.KENGINE_KEY,
isLocalDev: env.IS_LOCAL_DEV
})logger.info("Pretty Formatted Logs", { foo: "bar" });
ctx.waitUntill(logger.flush())
}
}
```Local development mode is disabled by default to improve performance.
## Configuration
The KengineLogger class takes the following configuration options
| Property | Type | Description |
|-----------------|---------------------|---------------------------------|
| `ctx` | `ExecutionContext` | Execution context |
| `apiKey` | `string` | API key for authentication |
| `dataset` | `string` (optional) | Dataset name |
| `service` | `string` (optional) | Service name |
| `namespace` | `string` (optional) | Namespace |
| `flushAfterMs` | `number` (optional) | Wait time to flush the logs to Kengine |
| `flushAfterLogs`| `number` (optional) | Threshold number of logs to flush |
| `requestId` | `string` (optional) | Request ID |
| `isLocalDev` | `boolean` (optional)| Indicates if it's for local development |## Contributor Alumni
The Kengine Edge Logger was created for the [Kengine community](https://join.slack.com/t/kenginecommunity/shared_invite/zt-25rig7ul2-m06V0DdYWpFHu~qH3F7DhQ) and generously offered to Kengine by [KhulnaSoft Hands](github.com/khulnasoft).### Contributing
If you would like to contribute to the development of this library, please
submit a pull request on GitHub.### License
This library is licensed under the MIT License. See the [LICENSE](LICENSE) file
for details.[docs]: https://kengine.khulnasoft.com/docs/
[docs_badge]: https://img.shields.io/badge/docs-reference-blue.svg?style=flat-square
[release]: https://github.com/khulnasoft/edge-logger/releases/latest
[release_badge]: https://img.shields.io/github/release/kengine/edge-logger.svg?style=flat-square&ghcache=unused
[license]: https://opensource.org/licenses/MIT
[license_badge]: https://img.shields.io/github/license/kengine/edge-logger.svg?color=blue&style=flat-square&ghcache=unused