@@ -63,14 +63,29 @@ function onReceivingJsonObject(event) {
6363 }
6464}
6565
66+ /**
67+ *
68+ * @returns {import('@themost/common').TraceLogger }
69+ */
70+ function createLogger ( ) {
71+ if ( typeof TraceUtils . newLogger === 'function' ) {
72+ return TraceUtils . newLogger ( ) ;
73+ }
74+ const [ loggerProperty ] = Object . getOwnPropertySymbols ( TraceUtils ) ;
75+ const logger = TraceUtils [ loggerProperty ] ;
76+ const newLogger = Object . create ( TraceUtils [ loggerProperty ] ) ;
77+ newLogger . options = Object . assign ( { } , logger . options ) ;
78+ return newLogger ;
79+ }
80+
6681
6782class SqliteAdapter {
6883 /**
6984 * @param {* } options
7085 */
7186 constructor ( options ) {
7287 /**
73- * @type {{database: string,retry: number=,retryInterval: number=} }
88+ * @type {{database: string,retry: number=,retryInterval: number=,logLevel:string= } }
7489 */
7590 this . options = options || { database : ':memory:' } ;
7691 // set defaults
@@ -88,7 +103,22 @@ class SqliteAdapter {
88103 this . executed = new AsyncSeriesEventEmitter ( ) ;
89104
90105 this . executed . subscribe ( onReceivingJsonObject ) ;
91-
106+ /**
107+ * create a new instance of logger
108+ * @type {import('@themost/common').TraceLogger }
109+ */
110+ this . logger = createLogger ( ) ;
111+ // use log level from connection options, if any
112+ if ( typeof this . options . logLevel === 'string' && this . options . logLevel . length ) {
113+ // if the logger has level(string) function
114+ if ( typeof this . logger . level === 'function' ) {
115+ // try to set log level
116+ this . logger . level ( this . options . logLevel ) ;
117+ // otherwise, check if logger has setLogLevel(string) function
118+ } else if ( typeof this . logger . setLogLevel === 'function' ) {
119+ this . logger . setLogLevel ( this . options . logLevel ) ;
120+ }
121+ }
92122 }
93123 open ( callback ) {
94124 const self = this ;
@@ -147,8 +177,8 @@ class SqliteAdapter {
147177 }
148178 }
149179 catch ( err ) {
150- TraceUtils . log ( 'An error occurred while closing database.' ) ;
151- TraceUtils . log ( err ) ;
180+ this . logger . warn ( 'An error occurred while closing database.' ) ;
181+ this . logger . warn ( err ) ;
152182 //call callback without error
153183 callback ( ) ;
154184 }
@@ -1153,8 +1183,7 @@ class SqliteAdapter {
11531183 }
11541184 else {
11551185 //log statement (optional)
1156- if ( process . env . NODE_ENV === 'development' )
1157- TraceUtils . log ( sprintf ( 'SQL:%s, Parameters:%s' , sql , JSON . stringify ( values ) ) ) ;
1186+ self . logger . debug ( `SQL:${ sql } , Parameters:${ JSON . stringify ( values ) } ` ) ;
11581187 //prepare statement - the traditional way
11591188 const prepared = self . prepare ( sql , values ) ;
11601189 let fn ;
@@ -1173,7 +1202,7 @@ class SqliteAdapter {
11731202 if ( err . code === 'SQLITE_BUSY' ) {
11741203 const shouldRetry = typeof self . options . retry === 'number' && self . options . retry > 0 ;
11751204 if ( shouldRetry === false ) {
1176- TraceUtils . error ( `SQL Error: ${ prepared } ` ) ;
1205+ self . logger . error ( `SQL Error: ${ prepared } ` ) ;
11771206 return callback ( err ) ;
11781207 }
11791208 const retry = self . options . retry ;
@@ -1196,7 +1225,7 @@ class SqliteAdapter {
11961225 }
11971226 // retry
11981227 callback . retry += retryInterval ;
1199- TraceUtils . warn ( `'SQL Error:${ prepared } . Retrying in ${ callback . retry } ms.'` ) ;
1228+ self . logger . warn ( `'SQL Error:${ prepared } . Retrying in ${ callback . retry } ms.'` ) ;
12001229 return setTimeout ( function ( ) {
12011230 self . execute ( query , values , callback ) ;
12021231 } , callback . retry ) ;
@@ -1205,7 +1234,7 @@ class SqliteAdapter {
12051234 if ( Object . prototype . hasOwnProperty . call ( callback , 'retry' ) ) {
12061235 delete callback . retry ;
12071236 }
1208- TraceUtils . error ( `SQL Error: ${ prepared } ` ) ;
1237+ self . logger . error ( `SQL Error: ${ prepared } ` ) ;
12091238 callback ( err ) ;
12101239 }
12111240 else {
0 commit comments