logstack-zee
Version:
Complete Node.js logging solution with 6 integration methods, S3 bidirectional operations, advanced analytics, and multi-cloud storage support for enterprise-scale applications.
365 lines (364 loc) • 11.1 kB
TypeScript
/**
* 🔒 Sensitive Data Masking Example
*
* This example demonstrates how to configure sensitive data masking for the logstack package.
* Data masking helps protect PII and sensitive information in logs and stored files.
*/
import { Config } from '../types/config';
declare const basicMaskingConfig: Config;
declare const productionMaskingConfig: Config;
declare const developmentMaskingConfig: Config;
declare const environmentConfigs: {
development: {
dataMasking: import("../lib/dataMasking").MaskingConfig;
dbUri: string;
uploadProvider: "local" | "s3" | "gcs" | "azure";
fileFormat?: "json" | "csv" | "txt";
retryAttempts?: number;
dailyCron?: string;
hourlyCron?: string;
timezone?: string;
retention?: {
database?: {
apiLogs?: number;
jobs?: number;
logs?: number;
autoCleanup?: boolean;
cleanupCron?: string;
};
storage?: {
files?: number;
autoCleanup?: boolean;
cleanupCron?: string;
s3Lifecycle?: {
transitionToIA?: number;
transitionToGlacier?: number;
transitionToDeepArchive?: number;
expiration?: number;
};
};
};
outputDirectory?: string;
folderStructure?: {
type?: "daily" | "monthly" | "yearly";
pattern?: string;
subFolders?: {
enabled?: boolean;
byHour?: boolean;
byStatus?: boolean;
custom?: string[];
};
naming?: {
dateFormat?: string;
includeTime?: boolean;
prefix?: string;
suffix?: string;
};
};
compression?: {
enabled?: boolean;
format?: "gzip" | "zip" | "brotli";
level?: number;
fileSize?: number;
};
collections?: {
jobsCollectionName?: string;
logsCollectionName?: string;
apiLogsCollectionName?: string;
};
apiLogs?: {
existingCollection?: {
name: string;
timestampField: string;
requiredFields?: {
method?: string;
path?: string;
client_ip?: string;
user_id?: string;
requestBody?: string;
responseStatus?: string;
responseBody?: string;
requestHeaders?: string;
responseHeaders?: string;
};
};
createNew?: {
collectionName?: string;
enableMiddleware?: boolean;
autoFields?: boolean;
};
};
s3?: {
accessKeyId: string;
secretAccessKey: string;
region: string;
bucket: string;
endpoint?: string;
};
gcs?: {
projectId: string;
keyFilename?: string;
credentials?: any;
bucket: string;
};
azure?: {
connectionString: string;
containerName: string;
};
logging?: {
level: "debug" | "info" | "warn" | "error";
enableConsole?: boolean;
enableFile?: boolean;
logFilePath?: string;
};
};
staging: {
dataMasking: import("../lib/dataMasking").MaskingConfig;
dbUri: string;
uploadProvider: "local" | "s3" | "gcs" | "azure";
fileFormat?: "json" | "csv" | "txt";
retryAttempts?: number;
dailyCron?: string;
hourlyCron?: string;
timezone?: string;
retention?: {
database?: {
apiLogs?: number;
jobs?: number;
logs?: number;
autoCleanup?: boolean;
cleanupCron?: string;
};
storage?: {
files?: number;
autoCleanup?: boolean;
cleanupCron?: string;
s3Lifecycle?: {
transitionToIA?: number;
transitionToGlacier?: number;
transitionToDeepArchive?: number;
expiration?: number;
};
};
};
outputDirectory?: string;
folderStructure?: {
type?: "daily" | "monthly" | "yearly";
pattern?: string;
subFolders?: {
enabled?: boolean;
byHour?: boolean;
byStatus?: boolean;
custom?: string[];
};
naming?: {
dateFormat?: string;
includeTime?: boolean;
prefix?: string;
suffix?: string;
};
};
compression?: {
enabled?: boolean;
format?: "gzip" | "zip" | "brotli";
level?: number;
fileSize?: number;
};
collections?: {
jobsCollectionName?: string;
logsCollectionName?: string;
apiLogsCollectionName?: string;
};
apiLogs?: {
existingCollection?: {
name: string;
timestampField: string;
requiredFields?: {
method?: string;
path?: string;
client_ip?: string;
user_id?: string;
requestBody?: string;
responseStatus?: string;
responseBody?: string;
requestHeaders?: string;
responseHeaders?: string;
};
};
createNew?: {
collectionName?: string;
enableMiddleware?: boolean;
autoFields?: boolean;
};
};
s3?: {
accessKeyId: string;
secretAccessKey: string;
region: string;
bucket: string;
endpoint?: string;
};
gcs?: {
projectId: string;
keyFilename?: string;
credentials?: any;
bucket: string;
};
azure?: {
connectionString: string;
containerName: string;
};
logging?: {
level: "debug" | "info" | "warn" | "error";
enableConsole?: boolean;
enableFile?: boolean;
logFilePath?: string;
};
};
production: {
dataMasking: import("../lib/dataMasking").MaskingConfig;
dbUri: string;
uploadProvider: "local" | "s3" | "gcs" | "azure";
fileFormat?: "json" | "csv" | "txt";
retryAttempts?: number;
dailyCron?: string;
hourlyCron?: string;
timezone?: string;
retention?: {
database?: {
apiLogs?: number;
jobs?: number;
logs?: number;
autoCleanup?: boolean;
cleanupCron?: string;
};
storage?: {
files?: number;
autoCleanup?: boolean;
cleanupCron?: string;
s3Lifecycle?: {
transitionToIA?: number;
transitionToGlacier?: number;
transitionToDeepArchive?: number;
expiration?: number;
};
};
};
outputDirectory?: string;
folderStructure?: {
type?: "daily" | "monthly" | "yearly";
pattern?: string;
subFolders?: {
enabled?: boolean;
byHour?: boolean;
byStatus?: boolean;
custom?: string[];
};
naming?: {
dateFormat?: string;
includeTime?: boolean;
prefix?: string;
suffix?: string;
};
};
compression?: {
enabled?: boolean;
format?: "gzip" | "zip" | "brotli";
level?: number;
fileSize?: number;
};
collections?: {
jobsCollectionName?: string;
logsCollectionName?: string;
apiLogsCollectionName?: string;
};
apiLogs?: {
existingCollection?: {
name: string;
timestampField: string;
requiredFields?: {
method?: string;
path?: string;
client_ip?: string;
user_id?: string;
requestBody?: string;
responseStatus?: string;
responseBody?: string;
requestHeaders?: string;
responseHeaders?: string;
};
};
createNew?: {
collectionName?: string;
enableMiddleware?: boolean;
autoFields?: boolean;
};
};
s3?: {
accessKeyId: string;
secretAccessKey: string;
region: string;
bucket: string;
endpoint?: string;
};
gcs?: {
projectId: string;
keyFilename?: string;
credentials?: any;
bucket: string;
};
azure?: {
connectionString: string;
containerName: string;
};
logging?: {
level: "debug" | "info" | "warn" | "error";
enableConsole?: boolean;
enableFile?: boolean;
logFilePath?: string;
};
};
};
declare const sensitiveTestData: {
user_id: string;
email: string;
password: string;
credit_card: string;
phone: string;
ssn: string;
api_key: string;
jwt_token: string;
ip_address: string;
request_body: string;
connection_string: string;
};
declare const sensitiveApiLogData: {
request_time: Date;
response_time: Date;
method: string;
path: string;
requestBody: {
email: string;
password: string;
remember_me: boolean;
};
requestHeaders: {
authorization: string;
'user-agent': string;
'x-api-key': string;
};
responseStatus: number;
responseBody: {
success: boolean;
token: string;
user: {
id: number;
email: string;
phone: string;
credit_card_last4: string;
};
};
client_ip: string;
client_agent: string;
};
export { basicMaskingConfig, productionMaskingConfig, developmentMaskingConfig, environmentConfigs, sensitiveTestData, sensitiveApiLogData };