@@ -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,18 @@ class SqliteAdapter {
88103 this . executed = new AsyncSeriesEventEmitter ( ) ;
89104
90105 this . executed . subscribe ( onReceivingJsonObject ) ;
91-
106+ /**
107+ * @type {import('@themost/common').TraceLogger }
108+ */
109+ this . logger = createLogger ( ) ;
110+ // stage 2: use log level from connection options, if any
111+ if ( typeof this . options . logLevel === 'string' && this . options . logLevel . length ) {
112+ if ( typeof this . logger . level === 'function' ) {
113+ this . logger . level ( this . options . logLevel ) ;
114+ } else if ( typeof this . logger . setLogLevel === 'function' ) {
115+ this . logger . setLogLevel ( this . options . logLevel ) ;
116+ }
117+ }
92118 }
93119 open ( callback ) {
94120 const self = this ;
@@ -147,8 +173,8 @@ class SqliteAdapter {
147173 }
148174 }
149175 catch ( err ) {
150- TraceUtils . log ( 'An error occurred while closing database.' ) ;
151- TraceUtils . log ( err ) ;
176+ this . logger . warn ( 'An error occurred while closing database.' ) ;
177+ this . logger . warn ( err ) ;
152178 //call callback without error
153179 callback ( ) ;
154180 }
@@ -1153,8 +1179,7 @@ class SqliteAdapter {
11531179 }
11541180 else {
11551181 //log statement (optional)
1156- if ( process . env . NODE_ENV === 'development' )
1157- TraceUtils . log ( sprintf ( 'SQL:%s, Parameters:%s' , sql , JSON . stringify ( values ) ) ) ;
1182+ self . logger . debug ( `SQL:${ sql } , Parameters:${ JSON . stringify ( values ) } ` ) ;
11581183 //prepare statement - the traditional way
11591184 const prepared = self . prepare ( sql , values ) ;
11601185 let fn ;
@@ -1173,7 +1198,7 @@ class SqliteAdapter {
11731198 if ( err . code === 'SQLITE_BUSY' ) {
11741199 const shouldRetry = typeof self . options . retry === 'number' && self . options . retry > 0 ;
11751200 if ( shouldRetry === false ) {
1176- TraceUtils . error ( `SQL Error: ${ prepared } ` ) ;
1201+ self . logger . error ( `SQL Error: ${ prepared } ` ) ;
11771202 return callback ( err ) ;
11781203 }
11791204 const retry = self . options . retry ;
@@ -1196,7 +1221,7 @@ class SqliteAdapter {
11961221 }
11971222 // retry
11981223 callback . retry += retryInterval ;
1199- TraceUtils . warn ( `'SQL Error:${ prepared } . Retrying in ${ callback . retry } ms.'` ) ;
1224+ self . logger . warn ( `'SQL Error:${ prepared } . Retrying in ${ callback . retry } ms.'` ) ;
12001225 return setTimeout ( function ( ) {
12011226 self . execute ( query , values , callback ) ;
12021227 } , callback . retry ) ;
@@ -1205,7 +1230,7 @@ class SqliteAdapter {
12051230 if ( Object . prototype . hasOwnProperty . call ( callback , 'retry' ) ) {
12061231 delete callback . retry ;
12071232 }
1208- TraceUtils . error ( `SQL Error: ${ prepared } ` ) ;
1233+ self . logger . error ( `SQL Error: ${ prepared } ` ) ;
12091234 callback ( err ) ;
12101235 }
12111236 else {
0 commit comments