1+ 'use strict' ;
2+
3+ const common = require ( '../common' ) ;
4+ const fs = require ( 'fs' ) ;
5+
6+ const bench = common . createBenchmark ( main , {
7+ n : [ 1e5 ] ,
8+ logger : [ 'node-logger' , 'pino' ] ,
9+ scenario : [ 'simple' , 'child' , 'disabled' , 'fields' ] ,
10+ } ) ;
11+
12+ function main ( { n, logger, scenario } ) {
13+ const nullFd = fs . openSync ( '/dev/null' , 'w' ) ;
14+ let testLogger ;
15+ let consumer ; // ← Consumer'ı üstte tanımla
16+
17+ if ( logger === 'node-logger' ) {
18+ const { createLogger, JSONConsumer } = require ( 'logger' ) ;
19+
20+ switch ( scenario ) {
21+ case 'simple' : {
22+ consumer = new JSONConsumer ( { stream : nullFd , level : 'info' } ) ;
23+ consumer . attach ( ) ;
24+ testLogger = createLogger ( { level : 'info' } ) ;
25+
26+ bench . start ( ) ;
27+ for ( let i = 0 ; i < n ; i ++ ) {
28+ testLogger . info ( 'benchmark test message' ) ;
29+ }
30+ bench . end ( n ) ;
31+ break ;
32+ }
33+
34+ case 'child' : {
35+ consumer = new JSONConsumer ( { stream : nullFd , level : 'info' } ) ;
36+ consumer . attach ( ) ;
37+ const baseLogger = createLogger ( { level : 'info' } ) ;
38+ testLogger = baseLogger . child ( { requestId : 'req-123' , userId : 456 } ) ;
39+
40+ bench . start ( ) ;
41+ for ( let i = 0 ; i < n ; i ++ ) {
42+ testLogger . info ( 'benchmark test message' ) ;
43+ }
44+ bench . end ( n ) ;
45+ break ;
46+ }
47+
48+ case 'disabled' : {
49+ consumer = new JSONConsumer ( { stream : nullFd , level : 'warn' } ) ;
50+ consumer . attach ( ) ;
51+ testLogger = createLogger ( { level : 'warn' } ) ;
52+
53+ bench . start ( ) ;
54+ for ( let i = 0 ; i < n ; i ++ ) {
55+ testLogger . debug ( 'benchmark test message' ) ;
56+ }
57+ bench . end ( n ) ;
58+ break ;
59+ }
60+
61+ case 'fields' : {
62+ consumer = new JSONConsumer ( { stream : nullFd , level : 'info' } ) ;
63+ consumer . attach ( ) ;
64+ testLogger = createLogger ( { level : 'info' } ) ;
65+
66+ bench . start ( ) ;
67+ for ( let i = 0 ; i < n ; i ++ ) {
68+ testLogger . info ( 'benchmark test message' , {
69+ field1 : 'value1' ,
70+ field2 : 'value2' ,
71+ field3 : 'value3' ,
72+ field4 : 'value4' ,
73+ field5 : 'value5' ,
74+ } ) ;
75+ }
76+ bench . end ( n ) ;
77+ break ;
78+ }
79+ }
80+
81+ if ( consumer ) { // ← Güvenlik kontrolü
82+ consumer . flushSync ( ) ;
83+ }
84+ fs . closeSync ( nullFd ) ;
85+
86+ } else if ( logger === 'pino' ) {
87+ const pino = require ( 'pino' ) ;
88+ const destination = pino . destination ( { dest : nullFd , sync : false } ) ;
89+
90+ switch ( scenario ) {
91+ case 'simple' : {
92+ testLogger = pino ( { level : 'info' } , destination ) ;
93+
94+ bench . start ( ) ;
95+ for ( let i = 0 ; i < n ; i ++ ) {
96+ testLogger . info ( 'benchmark test message' ) ;
97+ }
98+ bench . end ( n ) ;
99+ break ;
100+ }
101+
102+ case 'child' : {
103+ const baseLogger = pino ( { level : 'info' } , destination ) ;
104+ testLogger = baseLogger . child ( { requestId : 'req-123' , userId : 456 } ) ;
105+
106+ bench . start ( ) ;
107+ for ( let i = 0 ; i < n ; i ++ ) {
108+ testLogger . info ( 'benchmark test message' ) ;
109+ }
110+ bench . end ( n ) ;
111+ break ;
112+ }
113+
114+ case 'disabled' : {
115+ testLogger = pino ( { level : 'warn' } , destination ) ;
116+
117+ bench . start ( ) ;
118+ for ( let i = 0 ; i < n ; i ++ ) {
119+ testLogger . debug ( 'benchmark test message' ) ;
120+ }
121+ bench . end ( n ) ;
122+ break ;
123+ }
124+
125+ case 'fields' : {
126+ testLogger = pino ( { level : 'info' } , destination ) ;
127+
128+ bench . start ( ) ;
129+ for ( let i = 0 ; i < n ; i ++ ) {
130+ testLogger . info ( {
131+ msg : 'benchmark test message' ,
132+ field1 : 'value1' ,
133+ field2 : 'value2' ,
134+ field3 : 'value3' ,
135+ field4 : 'value4' ,
136+ field5 : 'value5' ,
137+ } ) ;
138+ }
139+ bench . end ( n ) ;
140+ break ;
141+ }
142+ }
143+
144+ destination . flushSync ( ) ;
145+ }
146+ }
0 commit comments