enrisk-logger
v1.1.0
Published
Enterprise logging solution with Grafana integration
Maintainers
Readme
@enrisk/logger
Enterprise-grade logging solution with Loki and Datadog support.
Installation
Add the package directly from GitHub to your project's package.json:
{
"dependencies": {
"@enrisk/logger": "git+https://github.com/Enrisk/logger.git"
}
}Then install dependencies:
# Install pnpm if you haven't already
npm install -g pnpm
# Install dependencies
pnpm installArchitecture
flowchart LR
A[Application] --> B[Logger]
B --> C[Console]
B --> D[Files]
B --> E[Loki]
E --> F[Grafana]
F --> G[Dashboards]
classDef storage fill:#f9f,stroke:#333,stroke-width:2px
classDef viz fill:#bbf,stroke:#333,stroke-width:2px
class D,E storage
class F,G vizQuick Start
import { Logger } from '@enrisk/logger';
const logger = new Logger({
service: 'my-service',
storage: {
type: 'loki',
config: {
lokiUrl: 'http://localhost:3100',
lokiLabels: {
environment: 'development',
team: 'my-team'
}
}
}
});
// Log messages
logger.info('Application started');
logger.error('An error occurred', { error: new Error('Something went wrong') });Configuration Options
Loki with API Key Authentication
When your Loki instance is protected by NGINX with API key validation, you can configure the logger to include the x-api-key header:
import { Logger } from '@enrisk/logger';
const logger = new Logger({
service: 'my-service',
storage: {
type: 'loki',
config: {
lokiUrl: 'http://your-loki-server:3100',
lokiApiKey: 'your-api-key-here',
lokiLabels: {
environment: 'production',
team: 'my-team'
}
}
}
});This will automatically include the x-api-key header in all requests to Loki, allowing your NGINX configuration to validate the API key as shown in your nginx config:
if ($http_x_api_key != "your-api-key-here") {
return 401 "Unauthorized: API key required";
}Other Storage Backends
Datadog
const logger = new Logger({
service: 'my-service',
storage: {
type: 'datadog',
config: {
datadogApiKey: 'your-datadog-api-key',
datadogHost: 'intake.logs.datadoghq.com',
datadogTags: ['env:production', 'team:backend']
}
}
});File Logging
const logger = new Logger({
service: 'my-service',
storage: {
type: 'file',
config: {
logDir: './logs',
maxFiles: '14d',
maxSize: '20m'
}
}
});Features
- Console and file logging
- Loki integration for centralized logging
- Datadog integration
- TypeScript support
- Daily log rotation
- Structured logging
Development
# Install dependencies
pnpm install
# Build
pnpm build
# Run tests
pnpm test
# Run linting
pnpm lint