
Security News
Ruby's Bundler 4.0.18 Extends Cooldown to bundle lock and bundle cache
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.
@deepracticex/logger
Advanced tools
Universal logging system for all JavaScript runtimes - Node.js, Cloudflare Workers, Browser, and more.
pnpm add @deepracticex/logger
Choose the right entry point for your platform:
// Uses Pino for high performance logging
import { createLogger } from "@deepracticex/logger";
// or explicitly
import { createLogger } from "@deepracticex/logger/nodejs";
const logger = createLogger({
level: "info",
name: "my-service",
console: true,
file: true, // File logging with daily rotation
});
logger.info("Server started");
// Uses lightweight console adapter (no Node.js dependencies)
import { createLogger } from "@deepracticex/logger/cloudflare-workers";
const logger = createLogger({
level: "info",
name: "my-worker",
console: true,
});
logger.info("Request handled");
// Uses browser-optimized console adapter
import { createLogger } from "@deepracticex/logger/browser";
const logger = createLogger({
level: "debug",
name: "my-app",
console: true,
colors: true,
});
logger.info("App initialized");
import { info, warn, error, debug } from "@deepracticex/logger";
info("Server started");
warn("Low memory");
error("Connection failed");
debug("Debug info");
import { createLogger } from "@deepracticex/logger";
const logger = createLogger({
level: "debug",
name: "@deepracticex/my-service",
console: true,
file: {
dirname: "/var/log/myapp",
},
colors: true,
});
logger.info("Custom logger initialized");
interface LoggerConfig {
// Log level (default: 'info')
level?: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
// Package/service name (default: 'app')
name?: string;
// Console output (default: true)
console?: boolean;
// File logging - Node.js only (default: false)
file?:
| boolean
| {
dirname?: string; // Log directory (default: ~/.deepractice/logs)
};
// Color support (default: true, auto-disabled in MCP stdio)
colors?: boolean;
}
LOG_LEVEL - Set log level (default: 'info')MCP_TRANSPORT=stdio - Auto-disable colors for MCP stdio modeDEEPRACTICE_NO_WORKERS=true - Force sync mode (useful for Electron)fatal - Critical errors that require immediate attentionerror - Errors that need to be fixedwarn - Warnings about potential issuesinfo - General information (default)debug - Detailed debug informationtrace - Very verbose trace informationUses Pino for high-performance logging:
File Structure:
~/.deepractice/logs/
├── deepractice-2025-10-13.log # All logs
└── deepractice-error-2025-10-13.log # Error logs only
Uses lightweight console adapter:
Uses browser-optimized console adapter:
import { createLogger } from "@deepracticex/logger";
const logger = createLogger({
level: process.env.LOG_LEVEL || "info",
name: "@deepracticex/api-server",
console: true,
file: {
dirname: "./logs",
},
});
logger.info({ port: 3000 }, "Server started");
logger.error({ err: error }, "Database connection failed");
import { createLogger } from "@deepracticex/logger/cloudflare-workers";
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const logger = createLogger({
name: "my-worker",
level: env.LOG_LEVEL || "info",
});
logger.info({ url: request.url }, "Request received");
try {
// Handle request
return new Response("OK");
} catch (error) {
logger.error({ error }, "Request failed");
return new Response("Error", { status: 500 });
}
},
};
import { createLogger } from "@deepracticex/logger/browser";
const logger = createLogger({
name: "my-app",
level: "debug",
colors: true,
});
logger.info("App initialized");
document.addEventListener("click", (e) => {
logger.debug({ target: e.target }, "User clicked");
});
The logger uses a two-adapter architecture:
Platform-specific entry points ensure only the necessary adapter is bundled:
@deepracticex/logger → nodejs.ts → pino-adapter
@deepracticex/logger/nodejs → nodejs.ts → pino-adapter
@deepracticex/logger/cloudflare-workers → cloudflare-workers.ts → console-adapter
@deepracticex/logger/browser → browser.ts → console-adapter
If you were using @deepracticex/logger 0.x:
Before:
import { createLogger } from "@deepracticex/logger";
After (Node.js projects - no change needed):
import { createLogger } from "@deepracticex/logger"; // Still works!
After (Cloudflare Workers - explicit import):
import { createLogger } from "@deepracticex/logger/cloudflare-workers";
This allows bundlers (esbuild, webpack, etc.) to tree-shake unused code. If you use the Cloudflare Workers entry, the 200KB+ pino dependency won't be included in your bundle.
Yes! Create a logger module:
// src/infrastructure/logger/index.ts
import { createLogger } from "@deepracticex/logger/cloudflare-workers";
export const logger = createLogger({
name: "my-app",
level: "info",
});
Then import everywhere:
import { logger } from "~/infrastructure/logger";
logger.info("Hello from any file!");
Yes! Each package can use the appropriate entry point:
// apps/api (Node.js)
import { createLogger } from "@deepracticex/logger";
// apps/worker (Cloudflare)
import { createLogger } from "@deepracticex/logger/cloudflare-workers";
// apps/web (Browser)
import { createLogger } from "@deepracticex/logger/browser";
MIT
FAQs
Lazy-initialized logging with pluggable backends
The npm package @deepracticex/logger receives a total of 44 weekly downloads. As such, @deepracticex/logger popularity was classified as not popular.
We found that @deepracticex/logger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.

Company News
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.