Support different log levels for database query error messages
This commit is contained in:
		
							parent
							
								
									ab8b557e73
								
							
						
					
					
						commit
						7aad664112
					
				@ -2,6 +2,7 @@ import * as fs from 'fs';
 | 
				
			|||||||
import path from 'path';
 | 
					import path from 'path';
 | 
				
			||||||
import config from './config';
 | 
					import config from './config';
 | 
				
			||||||
import { createPool, Pool, PoolConnection } from 'mysql2/promise';
 | 
					import { createPool, Pool, PoolConnection } from 'mysql2/promise';
 | 
				
			||||||
 | 
					import { LogLevel } from './logger';
 | 
				
			||||||
import logger from './logger';
 | 
					import logger from './logger';
 | 
				
			||||||
import { FieldPacket, OkPacket, PoolOptions, ResultSetHeader, RowDataPacket } from 'mysql2/typings/mysql';
 | 
					import { FieldPacket, OkPacket, PoolOptions, ResultSetHeader, RowDataPacket } from 'mysql2/typings/mysql';
 | 
				
			||||||
import { execSync } from 'child_process';
 | 
					import { execSync } from 'child_process';
 | 
				
			||||||
@ -33,7 +34,7 @@ import { execSync } from 'child_process';
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public async query<T extends RowDataPacket[][] | RowDataPacket[] | OkPacket |
 | 
					  public async query<T extends RowDataPacket[][] | RowDataPacket[] | OkPacket |
 | 
				
			||||||
    OkPacket[] | ResultSetHeader>(query, params?, connection?: PoolConnection): Promise<[T, FieldPacket[]]>
 | 
					    OkPacket[] | ResultSetHeader>(query, params?, errorLogLevel: LogLevel | 'silent' = 'debug', connection?: PoolConnection): Promise<[T, FieldPacket[]]>
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    this.checkDBFlag();
 | 
					    this.checkDBFlag();
 | 
				
			||||||
    let hardTimeout;
 | 
					    let hardTimeout;
 | 
				
			||||||
@ -55,7 +56,9 @@ import { execSync } from 'child_process';
 | 
				
			|||||||
        }).then(result => {
 | 
					        }).then(result => {
 | 
				
			||||||
          resolve(result);
 | 
					          resolve(result);
 | 
				
			||||||
        }).catch(error => {
 | 
					        }).catch(error => {
 | 
				
			||||||
          logger.debug(`database query "${query?.sql?.slice(0, 160) || (typeof(query) === 'string' || query instanceof String ? query?.slice(0, 160) : 'unknown query')}" failed!`);
 | 
					          if (errorLogLevel !== 'silent') {
 | 
				
			||||||
 | 
					            logger[errorLogLevel](`database query "${query?.sql?.slice(0, 160) || (typeof(query) === 'string' || query instanceof String ? query?.slice(0, 160) : 'unknown query')}" failed!`);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          reject(error);
 | 
					          reject(error);
 | 
				
			||||||
        }).finally(() => {
 | 
					        }).finally(() => {
 | 
				
			||||||
          clearTimeout(timer);
 | 
					          clearTimeout(timer);
 | 
				
			||||||
@ -66,7 +69,9 @@ import { execSync } from 'child_process';
 | 
				
			|||||||
        const pool = await this.getPool();
 | 
					        const pool = await this.getPool();
 | 
				
			||||||
        return pool.query(query, params);
 | 
					        return pool.query(query, params);
 | 
				
			||||||
      } catch (e) {
 | 
					      } catch (e) {
 | 
				
			||||||
        logger.debug(`database query "${query?.sql?.slice(0, 160) || (typeof(query) === 'string' || query instanceof String ? query?.slice(0, 160) : 'unknown query')}" failed!`);
 | 
					        if (errorLogLevel !== 'silent') {
 | 
				
			||||||
 | 
					          logger[errorLogLevel](`database query "${query?.sql?.slice(0, 160) || (typeof(query) === 'string' || query instanceof String ? query?.slice(0, 160) : 'unknown query')}" failed!`);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        throw e;
 | 
					        throw e;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -82,7 +87,7 @@ import { execSync } from 'child_process';
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public async $atomicQuery<T extends RowDataPacket[][] | RowDataPacket[] | OkPacket |
 | 
					  public async $atomicQuery<T extends RowDataPacket[][] | RowDataPacket[] | OkPacket |
 | 
				
			||||||
    OkPacket[] | ResultSetHeader>(queries: { query, params }[]): Promise<[T, FieldPacket[]][]>
 | 
					    OkPacket[] | ResultSetHeader>(queries: { query, params }[], errorLogLevel: LogLevel | 'silent' = 'debug'): Promise<[T, FieldPacket[]][]>
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const pool = await this.getPool();
 | 
					    const pool = await this.getPool();
 | 
				
			||||||
    const connection = await pool.getConnection();
 | 
					    const connection = await pool.getConnection();
 | 
				
			||||||
@ -91,7 +96,7 @@ import { execSync } from 'child_process';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      const results: [T, FieldPacket[]][]  = [];
 | 
					      const results: [T, FieldPacket[]][]  = [];
 | 
				
			||||||
      for (const query of queries) {
 | 
					      for (const query of queries) {
 | 
				
			||||||
        const result = await this.query(query.query, query.params, connection) as [T, FieldPacket[]];
 | 
					        const result = await this.query(query.query, query.params, errorLogLevel, connection) as [T, FieldPacket[]];
 | 
				
			||||||
        results.push(result);
 | 
					        results.push(result);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -157,4 +157,6 @@ class Logger {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export type LogLevel = 'emerg' | 'alert' | 'crit' | 'err' | 'warn' | 'notice' | 'info' | 'debug';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default new Logger();
 | 
					export default new Logger();
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ class NodesSocketsRepository {
 | 
				
			|||||||
      await DB.query(`
 | 
					      await DB.query(`
 | 
				
			||||||
        INSERT INTO nodes_sockets(public_key, socket, type)
 | 
					        INSERT INTO nodes_sockets(public_key, socket, type)
 | 
				
			||||||
        VALUE (?, ?, ?)
 | 
					        VALUE (?, ?, ?)
 | 
				
			||||||
      `, [socket.publicKey, socket.addr, socket.network]);
 | 
					      `, [socket.publicKey, socket.addr, socket.network], 'silent');
 | 
				
			||||||
    } catch (e: any) {
 | 
					    } catch (e: any) {
 | 
				
			||||||
      if (e.errno !== 1062) { // ER_DUP_ENTRY - Not an issue, just ignore this
 | 
					      if (e.errno !== 1062) { // ER_DUP_ENTRY - Not an issue, just ignore this
 | 
				
			||||||
        logger.err(`Cannot save node socket (${[socket.publicKey, socket.addr, socket.network]}) into db. Reason: ` + (e instanceof Error ? e.message : e));
 | 
					        logger.err(`Cannot save node socket (${[socket.publicKey, socket.addr, socket.network]}) into db. Reason: ` + (e instanceof Error ? e.message : e));
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user