@@ -72,6 +72,34 @@ const logger = createLogger({
7272logger .info (" App initialized" );
7373```
7474
75+ ### Test Environment (Vitest/Jest)
76+
77+ ``` typescript
78+ // Uses in-memory test adapter with log capture
79+ import {
80+ createLogger ,
81+ getTestLogs ,
82+ clearTestLogs ,
83+ } from " @deepracticex/logger/test" ;
84+
85+ const logger = createLogger ({
86+ level: " debug" ,
87+ name: " my-service" ,
88+ console: false , // Silent by default in tests
89+ });
90+
91+ // Your test code
92+ logger .info (" test message" );
93+
94+ // Assert logs were captured
95+ const logs = getTestLogs ();
96+ expect (logs ).toHaveLength (1 );
97+ expect (logs [0 ].message ).toBe (" test message" );
98+
99+ // Clean up between tests
100+ clearTestLogs ();
101+ ```
102+
75103## Quick Start
76104
77105### Default Logger (Node.js)
@@ -182,6 +210,64 @@ Uses browser-optimized console adapter:
182210- Source map integration
183211- DevTools friendly
184212
213+ ### Test Environment
214+
215+ Uses in-memory test adapter:
216+
217+ - Auto-detected in vitest/jest (via ` VITEST=true ` or ` NODE_ENV=test ` )
218+ - Silent by default (no console output)
219+ - Captures all logs in memory for assertions
220+ - Zero I/O overhead for fast tests
221+ - Utilities: ` getTestLogs() ` , ` clearTestLogs() ` , ` getTestLogsByLevel() `
222+
223+ ** Usage in tests:**
224+
225+ ``` typescript
226+ import {
227+ createLogger ,
228+ getTestLogs ,
229+ clearTestLogs ,
230+ } from " @deepracticex/logger/test" ;
231+
232+ describe (" my feature" , () => {
233+ const logger = createLogger ();
234+
235+ afterEach (() => {
236+ clearTestLogs (); // Clean up between tests
237+ });
238+
239+ it (" should log messages" , () => {
240+ logger .info (" test started" );
241+ logger .warn (" warning message" );
242+
243+ const logs = getTestLogs ();
244+ expect (logs ).toHaveLength (2 );
245+ expect (logs [0 ].level ).toBe (" info" );
246+ });
247+ });
248+ ```
249+
250+ ** Auto-detection:**
251+
252+ When running in vitest, the default ` @deepracticex/logger ` import automatically uses the test adapter:
253+
254+ ``` typescript
255+ // Automatically uses test adapter in vitest
256+ import { createLogger } from " @deepracticex/logger" ;
257+
258+ const logger = createLogger (); // No console output in tests
259+ ```
260+
261+ ** Enable console output for debugging:**
262+
263+ ``` typescript
264+ // Show logs in test output
265+ const logger = createLogger ({ console: true });
266+
267+ // Or run with verbose reporter
268+ // pnpm test -- --reporter=verbose
269+ ```
270+
185271## Examples
186272
187273### Node.js Service
@@ -247,25 +333,35 @@ document.addEventListener("click", (e) => {
247333
248334## Architecture
249335
250- The logger uses a two -adapter architecture:
336+ The logger uses a multi -adapter architecture with automatic runtime detection :
251337
2523381 . ** Pino Adapter** - For Node.js (high performance, file support)
2533392 . ** Console Adapter** - For edge/browser (lightweight, universal)
340+ 3 . ** Test Adapter** - For test environments (in-memory, inspectable)
254341
255342Platform-specific entry points ensure only the necessary adapter is bundled:
256343
257344```
258- @deepracticex/logger → nodejs.ts → pino- adapter
345+ @deepracticex/logger → Auto-detect → appropriate adapter
259346@deepracticex/logger/nodejs → nodejs.ts → pino-adapter
260347@deepracticex/logger/cloudflare-workers → cloudflare-workers.ts → console-adapter
261348@deepracticex/logger/browser → browser.ts → console-adapter
349+ @deepracticex/logger/test → test.ts → test-adapter
262350```
263351
352+ ** Auto-detection priority:**
353+
354+ 1 . Test environment (VITEST=true or NODE_ENV=test) → test adapter
355+ 2 . Cloudflare Workers (caches API present) → console adapter
356+ 3 . Node.js (process.versions.node) → pino adapter
357+ 4 . Fallback → console adapter (browser)
358+
264359## Bundle Size
265360
266361- Node.js: Full pino functionality (~ 200KB with dependencies)
267362- Cloudflare Workers: ~ 1.5KB (console adapter only)
268363- Browser: ~ 1.5KB (console adapter only)
364+ - Test: ~ 2KB (test adapter with inspection utilities)
269365
270366## FAQ
271367
@@ -310,6 +406,50 @@ import { createLogger } from "@deepracticex/logger/cloudflare-workers";
310406import { createLogger } from " @deepracticex/logger/browser" ;
311407```
312408
409+ ### How do I use it in tests?
410+
411+ The logger automatically detects test environments (vitest/jest) and uses the test adapter:
412+
413+ ``` typescript
414+ // Automatically silent in tests
415+ import { createLogger } from " @deepracticex/logger" ;
416+ const logger = createLogger ();
417+
418+ logger .info (" message" ); // Captured, but no console output
419+ ```
420+
421+ To inspect logs in tests:
422+
423+ ``` typescript
424+ import {
425+ createLogger ,
426+ getTestLogs ,
427+ clearTestLogs ,
428+ } from " @deepracticex/logger/test" ;
429+
430+ const logger = createLogger ();
431+ logger .info (" test message" );
432+
433+ const logs = getTestLogs ();
434+ expect (logs [0 ].message ).toBe (" test message" );
435+
436+ clearTestLogs (); // Clean up
437+ ```
438+
439+ ### How do I see logs when debugging tests?
440+
441+ Use vitest's verbose reporter:
442+
443+ ``` bash
444+ pnpm test -- --reporter=verbose
445+ ```
446+
447+ Or enable console output explicitly:
448+
449+ ``` typescript
450+ const logger = createLogger ({ console: true });
451+ ```
452+
313453## License
314454
315455MIT
0 commit comments