TypeScript client SDK for AVS Centralized Logging Platform
npm install @avss-tech/loggerbash
npm install @avss-tech/logger
`
Quick Start
`typescript
import { AVSSLogger } from '@avss-tech/logger';
const logger = new AVSLogger({
project: 'my-app',
apiKey: 'your-api-key',
endpoint: 'http://logging-service:4000/logs',
onFatalError: (error) => {
console.error('AVS Logger Fatal Error:', error);
},
});
// Log message
await logger.log({
message: 'Application started',
level: 'info',
});
// Log audit event
await logger.audit({
actor: { userId: 'user123' },
action: 'USER_LOGIN',
entity: { type: 'USER', id: 'user123' },
});
`
API Documentation
$3
`typescript
interface AVSLoggerConfig {
project: string; // Required: Project identifier
apiKey: string; // Required: API key for authentication
endpoint?: string; // Optional: Logging service URL
timeout?: number; // Optional: Request timeout in ms
enableQueue?: boolean; // Optional: Enable queue batching
batchSize?: number; // Optional: Batch size for queue
batchTimeout?: number; // Optional: Batch timeout in ms
maxRetries?: number; // Optional: Max retries for failed requests
initialRetryDelay?: number; // Optional: Initial retry delay in ms
debug?: boolean; // Optional: Enable debug logging
customHeaders?: Record; // Optional: Custom headers
onFatalError?: (error: Error) => void; // Optional: Error callback
}
`
$3
#### log() - Generic Logging
`typescript
await logger.log({
message: 'User action completed',
level: 'info',
userId: 'user123',
meta: { action: 'profile_update' }
});
`
#### audit() - Audit Logging
`typescript
await logger.audit({
actor: { userId: 'user123', email: 'user@example.com' },
action: 'DOCUMENT_SIGNED',
entity: { type: 'DOCUMENT', id: 'doc456' },
metadata: { version: '2.0' }
});
`
#### access() - Access Logging
`typescript
await logger.access({
endpoint: '/api/users',
method: 'GET',
statusCode: 200,
ip: '192.168.1.1',
responseTimeMs: 45,
userId: 'user123'
});
`
#### error() - Error Logging
`typescript
await logger.error({
message: 'Database connection failed',
stack: error.stack,
context: { database: 'postgresql' },
userId: 'user123'
});
`
$3
`typescript
const logger = new AVSLogger({
project: 'my-app',
apiKey: 'your-api-key',
enableQueue: true,
batchSize: 50,
batchTimeout: 5000
});
// Logs are automatically batched and sent
await logger.log({ message: 'Test' });
// Manually flush the queue
await logger.flush();
// Cleanup
logger.destroy();
`
$3
`typescript
const stats = logger.getStatistics();
console.log(stats);
// {
// totalLogsAttempted: 10,
// successfulLogs: 9,
// failedLogs: 1,
// retriedLogs: 2,
// averageResponseTimeMs: 35,
// queueLength: 0
// }
logger.resetStatistics();
`
$3
`typescript
await logger.search({ startDate: '2026-01-01', endDate: '2026-01-31', level: 'info', userId: '', project: 'esign-saas' })
`
$3
`typescript
await logger.getAuditLogs(50, 'esign-saas')
`
$3
`typescript
await logger.getErrorLogs(50, 'esign-saas')
`
$3
`typescript
await logger.getAccessLogs(50, 'esign-saas')
`
$3
`typescript
await logger.verify('esign-saas')
`
Error Handling
`typescript
try {
await logger.log({
message: 'Important event',
level: 'warn'
});
} catch (error) {
console.error('Logging failed:', error);
}
// Or use the returned LogResult
const result = await logger.log({ message: 'Test' });
if (!result.success) {
console.error(result.message);
}
``