diff --git a/packages/client-app/src/flux/stores/database-store.es6 b/packages/client-app/src/flux/stores/database-store.es6 index 439ac25ea..27deeb583 100644 --- a/packages/client-app/src/flux/stores/database-store.es6 +++ b/packages/client-app/src/flux/stores/database-store.es6 @@ -5,7 +5,7 @@ import childProcess from 'child_process'; import PromiseQueue from 'promise-queue'; import {remote, ipcRenderer} from 'electron'; import LRU from "lru-cache"; -import {ExponentialBackoffScheduler} from 'isomorphic-core'; +import {StringUtils, ExponentialBackoffScheduler} from 'isomorphic-core'; import NylasStore from '../../global/nylas-store'; import Utils from '../models/utils'; @@ -333,6 +333,10 @@ class DatabaseStore extends NylasStore { } this._executeInBackground(query, values).then(({results, backgroundTime}) => { const msec = Date.now() - start; + if (process.env.ENABLE_RXDB_DEBUG_LOGGING) { + const q = `🔶 N1: (${msec}ms) Background: ${query}`; + StringUtils.logTrim(q) + } if (msec > 100 || DEBUG_TO_LOG) { const msgPrefix = msec > 100 ? 'DatabaseStore._executeInBackground took more than 100ms - ' : '' this._prettyConsoleLog(`${msgPrefix}${msec}msec (${backgroundTime}msec in background): ${query}`); @@ -384,6 +388,11 @@ class DatabaseStore extends NylasStore { results = stmt[fn](values); const msec = Date.now() - start + if (process.env.ENABLE_RXDB_DEBUG_LOGGING) { + const q = `🔶 N1: (${msec}ms) ${query}`; + StringUtils.logTrim(q) + } + if (msec > 100 || DEBUG_TO_LOG) { const msgPrefix = msec > 100 ? 'DatabaseStore: query took more than 100ms - ' : '' if (query.startsWith(`SELECT `) && DEBUG_QUERY_PLANS) { diff --git a/packages/client-sync/src/shared/local-database-connector.js b/packages/client-sync/src/shared/local-database-connector.js index 9264366f4..d8fd9d544 100644 --- a/packages/client-sync/src/shared/local-database-connector.js +++ b/packages/client-sync/src/shared/local-database-connector.js @@ -1,7 +1,7 @@ const Sequelize = require('sequelize'); const fs = require('fs'); const path = require('path'); -const {loadModels, HookIncrementVersionOnSave, HookTransactionLog} = require('isomorphic-core'); +const {StringUtils, loadModels, HookIncrementVersionOnSave, HookTransactionLog} = require('isomorphic-core'); const TransactionConnector = require('./transaction-connector') require('./database-extensions'); // Extends Sequelize on require @@ -15,10 +15,14 @@ class LocalDatabaseConnector { _sequelizePoolForDatabase(dbname) { const storage = NylasEnv.inSpecMode() ? ':memory:' : path.join(process.env.NYLAS_HOME, `${dbname}.sqlite`); + const dbLog = (q, time) => { + StringUtils.logTrim(`🔷 K2: (${time}ms) ${q}`) + } return new Sequelize(dbname, '', '', { storage: storage, dialect: "sqlite", - logging: ENABLE_SEQUELIZE_DEBUG_LOGGING ? console.log : false, + benchmark: !!ENABLE_SEQUELIZE_DEBUG_LOGGING, + logging: ENABLE_SEQUELIZE_DEBUG_LOGGING ? dbLog : false, }) } diff --git a/packages/isomorphic-core/index.js b/packages/isomorphic-core/index.js index b2bbea68a..e6c97edfd 100644 --- a/packages/isomorphic-core/index.js +++ b/packages/isomorphic-core/index.js @@ -25,4 +25,5 @@ module.exports = { MessageFactory: require('./src/message-factory'), SendUtils: require('./src/send-utils'), executeJasmine: require('./spec/jasmine/execute').default, + StringUtils: require('./src/string-utils'), } diff --git a/packages/isomorphic-core/src/string-utils.es6 b/packages/isomorphic-core/src/string-utils.es6 new file mode 100644 index 000000000..2e19d5655 --- /dev/null +++ b/packages/isomorphic-core/src/string-utils.es6 @@ -0,0 +1,12 @@ +export function logTrim(...args) { + const g = window || global || {} + const LOG_TRIM_SIZE = process.env.LOG_TRIM_SIZE || g.LOG_TRIM_SIZE || 256; + for (let i = 0; i < args.length; i++) { + let str = args[i]; + if (str.length >= LOG_TRIM_SIZE) { + str = `${str.slice(0, LOG_TRIM_SIZE / 2)}…${str.slice(str.length - LOG_TRIM_SIZE / 2, str.length)}` + } + args[i] = str; + } + console.log(...args); +}