From 66e8f149ea73e7eb24e534e0476fbee676b0b884 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 11 Apr 2024 15:19:24 +0200 Subject: [PATCH 01/10] feat: refs #6449 add summaryId --- config/logs.yml | 1 + mylogger.js | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/config/logs.yml b/config/logs.yml index 204a61b..6d35364 100644 --- a/config/logs.yml +++ b/config/logs.yml @@ -23,6 +23,7 @@ logs: - itemTag - name: item showField: name + showId: id logFields: - size exclude: diff --git a/mylogger.js b/mylogger.js index be2c508..d1ed9a0 100644 --- a/mylogger.js +++ b/mylogger.js @@ -80,7 +80,8 @@ module.exports = class MyLogger { oldInstance = ?, newInstance = ?, changedModelId = ?, - changedModelValue = ?` + changedModelValue = ?, + summaryId = ?` ); logInfo.fetchStmt = await db.prepare( `SELECT id FROM ${sqlTable} @@ -512,7 +513,7 @@ module.exports = class MyLogger { oldI = change.instance; break; } - + const summaryId = row[tableInfo.conf.showId]; const modelId = row[tableInfo.idName]; const modelValue = change.modelValue ?? null; const oldInstance = oldI ? JSON.stringify(oldI) : null; @@ -553,7 +554,8 @@ module.exports = class MyLogger { oldInstance, newI ? JSON.stringify(newI) : null, modelId, - modelValue + modelValue, + summaryId ]); } From 8e5c2af4ee6c5e55fd38db3faccc2511936bc42b Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 11 Jun 2024 15:50:18 +0200 Subject: [PATCH 02/10] feat: refs #6449 add summaryId on delete --- mylogger.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mylogger.js b/mylogger.js index d1ed9a0..cffc001 100644 --- a/mylogger.js +++ b/mylogger.js @@ -96,7 +96,8 @@ module.exports = class MyLogger { SET originFk = ?, creationDate = ?, oldInstance = ?, - changedModelValue = ? + changedModelValue = ?, + summaryId = ? WHERE id = ?` ); } @@ -539,6 +540,7 @@ module.exports = class MyLogger { created, oldInstance, modelValue, + summaryId, deleteRow.id ]); } From 217e1cc177289dab840d5cf2205d6971286cd152 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 23 Jul 2024 11:41:50 +0200 Subject: [PATCH 03/10] Revert "Merge pull request 'feat: refs #6449 addSummaryId' (#3) from 6449-addSummaryId into master" This reverts commit 1e2948506e54120a6e4d65d0bbd77d3403d02994, reversing changes made to 2bb99bf093d855467c259490d6ec583f32dbcf8f. --- config/logs.yml | 1 - mylogger.js | 12 ++++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/config/logs.yml b/config/logs.yml index 6d35364..204a61b 100644 --- a/config/logs.yml +++ b/config/logs.yml @@ -23,7 +23,6 @@ logs: - itemTag - name: item showField: name - showId: id logFields: - size exclude: diff --git a/mylogger.js b/mylogger.js index cffc001..be2c508 100644 --- a/mylogger.js +++ b/mylogger.js @@ -80,8 +80,7 @@ module.exports = class MyLogger { oldInstance = ?, newInstance = ?, changedModelId = ?, - changedModelValue = ?, - summaryId = ?` + changedModelValue = ?` ); logInfo.fetchStmt = await db.prepare( `SELECT id FROM ${sqlTable} @@ -96,8 +95,7 @@ module.exports = class MyLogger { SET originFk = ?, creationDate = ?, oldInstance = ?, - changedModelValue = ?, - summaryId = ? + changedModelValue = ? WHERE id = ?` ); } @@ -514,7 +512,7 @@ module.exports = class MyLogger { oldI = change.instance; break; } - const summaryId = row[tableInfo.conf.showId]; + const modelId = row[tableInfo.idName]; const modelValue = change.modelValue ?? null; const oldInstance = oldI ? JSON.stringify(oldI) : null; @@ -540,7 +538,6 @@ module.exports = class MyLogger { created, oldInstance, modelValue, - summaryId, deleteRow.id ]); } @@ -556,8 +553,7 @@ module.exports = class MyLogger { oldInstance, newI ? JSON.stringify(newI) : null, modelId, - modelValue, - summaryId + modelValue ]); } From 01a08883e808290cdcbc1d6f4b4ee3d0b4f71500 Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 30 Jul 2024 13:13:30 +0200 Subject: [PATCH 04/10] feat: refs #6449 add summaryId --- config/logs.yml | 1 + mylogger.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/config/logs.yml b/config/logs.yml index 204a61b..6d35364 100644 --- a/config/logs.yml +++ b/config/logs.yml @@ -23,6 +23,7 @@ logs: - itemTag - name: item showField: name + showId: id logFields: - size exclude: diff --git a/mylogger.js b/mylogger.js index be2c508..cffc001 100644 --- a/mylogger.js +++ b/mylogger.js @@ -80,7 +80,8 @@ module.exports = class MyLogger { oldInstance = ?, newInstance = ?, changedModelId = ?, - changedModelValue = ?` + changedModelValue = ?, + summaryId = ?` ); logInfo.fetchStmt = await db.prepare( `SELECT id FROM ${sqlTable} @@ -95,7 +96,8 @@ module.exports = class MyLogger { SET originFk = ?, creationDate = ?, oldInstance = ?, - changedModelValue = ? + changedModelValue = ?, + summaryId = ? WHERE id = ?` ); } @@ -512,7 +514,7 @@ module.exports = class MyLogger { oldI = change.instance; break; } - + const summaryId = row[tableInfo.conf.showId]; const modelId = row[tableInfo.idName]; const modelValue = change.modelValue ?? null; const oldInstance = oldI ? JSON.stringify(oldI) : null; @@ -538,6 +540,7 @@ module.exports = class MyLogger { created, oldInstance, modelValue, + summaryId, deleteRow.id ]); } @@ -553,7 +556,8 @@ module.exports = class MyLogger { oldInstance, newI ? JSON.stringify(newI) : null, modelId, - modelValue + modelValue, + summaryId ]); } From 4e709c209198e02604ef445ef63fef5fe5f1d714 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 8 Aug 2024 14:07:20 +0200 Subject: [PATCH 05/10] fix: refs #6449 summaryId undefined --- mylogger.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mylogger.js b/mylogger.js index cffc001..601dbdf 100644 --- a/mylogger.js +++ b/mylogger.js @@ -492,6 +492,7 @@ module.exports = class MyLogger { const isDelete = action == 'delete'; const isUpdate = action == 'update'; const created = new Date(evt.timestamp); + const showId = tableInfo.conf.showId; for (const change of changes) { let newI, oldI; @@ -514,7 +515,7 @@ module.exports = class MyLogger { oldI = change.instance; break; } - const summaryId = row[tableInfo.conf.showId]; + const summaryId = showId ? row[showId] : null; const modelId = row[tableInfo.idName]; const modelValue = change.modelValue ?? null; const oldInstance = oldI ? JSON.stringify(oldI) : null; From 5857c2294e4867a8c2881329526aca315bc0a61b Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 28 Aug 2024 10:56:16 +0200 Subject: [PATCH 06/10] fix: Unhandled connection in closed state --- mylogger.js | 33 +++++++++++++-------------------- package.json | 2 +- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/mylogger.js b/mylogger.js index 601dbdf..2e8b6a7 100644 --- a/mylogger.js +++ b/mylogger.js @@ -57,12 +57,9 @@ module.exports = class MyLogger { async init() { const {conf} = this; this.debug('MyLogger', 'Initializing.'); - this.onErrorListener = err => this.onError(err); // DB connection - const db = this.db = await mysql.createConnection(conf.dstDb); - db.on('error', this.onErrorListener); await this.modelLoader.loadSchema(); await this.showDb.loadSchema(); @@ -134,8 +131,6 @@ module.exports = class MyLogger { if (!this.running) return; this.running = false; this.debug('MyLogger', 'Ending.'); - - this.db.off('error', this.onErrorListener); clearInterval(this.flushInterval); clearInterval(this.pingInterval); @@ -206,7 +201,6 @@ module.exports = class MyLogger { zongji.once('error', onError); zongji.start(zongjiOpts); }); - zongji.on('error', this.onErrorListener); this.zongji = zongji; this.debug('Zongji', 'Started.'); } @@ -220,7 +214,6 @@ module.exports = class MyLogger { this.zongji = null; zongji.off('binlog', this.onBinlogListener); - zongji.off('error', this.onErrorListener); // FIXME: Cannot call Zongji.stop(), it doesn't wait to end connection zongji.connection.destroy(() => { @@ -250,7 +243,7 @@ module.exports = class MyLogger { } } - async onError(err) { + async handleError(err) { if (!this.isOk) return; this.isOk = false; console.log(`Error: ${err.code}: ${err.message}`); @@ -259,19 +252,19 @@ module.exports = class MyLogger { await this.end(true); } catch(e) {} - switch (err.code) { - case 'PROTOCOL_CONNECTION_LOST': - case 'ECONNRESET': - console.log('Trying to restart process.'); + // FIXME: Error of mysql2/promise + if (err.message === `Can't add new command when connection is in closed state`) await this.tryRestart(); - break; - default: - process.exit(); - } - } - - handleError(err) { - console.error(err); + else + switch (err.code) { + case 'PROTOCOL_CONNECTION_LOST': + case 'ECONNRESET': + console.log('Trying to restart process.'); + await this.tryRestart(); + break; + default: + process.exit(); + } } async onBinlog(evt) { diff --git a/package.json b/package.json index 4bfba16..8e896cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mylogger", - "version": "1.1.4", + "version": "1.1.5", "author": "Verdnatura Levante SL", "description": "MySQL and MariaDB logger using binary log", "license": "GPL-3.0", From c501b254d5e421729a9b940a2aed41480b5c54a1 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 9 Sep 2024 11:43:15 +0200 Subject: [PATCH 07/10] feat: refs #7584 restriction noInclude --- mylogger.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mylogger.js b/mylogger.js index 2e8b6a7..31023ab 100644 --- a/mylogger.js +++ b/mylogger.js @@ -522,9 +522,9 @@ module.exports = class MyLogger { `[${action}]`[actionColor[action]], `${logInfo.name}: ${originFk}, ${modelName}: ${modelId}` ); - + const noInclude = tableInfo.rowExcludeField && !row.editorFk; try { - if (isDelete) { + if (isDelete && (!tableInfo.rowExcludeField || noInclude)) { [[deleteRow]] = await logInfo.fetchStmt.execute([ modelName, modelId, originFk ]); @@ -540,7 +540,7 @@ module.exports = class MyLogger { } if (!conf.testMode && (!isDelete || !deleteRow)) { async function log(originFk) { - if (originFk == null) return; + if (originFk == null ||noInclude) return; await logInfo.addStmt.execute([ originFk, row[tableInfo.userField] ?? null, From 6b53029c065b7f6f693cb0ea05128a6d05bff5fe Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 9 Sep 2024 11:49:21 +0200 Subject: [PATCH 08/10] feat: refs #7584 tabulaciones y saltos de linea --- mylogger.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mylogger.js b/mylogger.js index 31023ab..c53d3dc 100644 --- a/mylogger.js +++ b/mylogger.js @@ -522,7 +522,9 @@ module.exports = class MyLogger { `[${action}]`[actionColor[action]], `${logInfo.name}: ${originFk}, ${modelName}: ${modelId}` ); + const noInclude = tableInfo.rowExcludeField && !row.editorFk; + try { if (isDelete && (!tableInfo.rowExcludeField || noInclude)) { [[deleteRow]] = await logInfo.fetchStmt.execute([ @@ -540,7 +542,7 @@ module.exports = class MyLogger { } if (!conf.testMode && (!isDelete || !deleteRow)) { async function log(originFk) { - if (originFk == null ||noInclude) return; + if (originFk == null || noInclude) return; await logInfo.addStmt.execute([ originFk, row[tableInfo.userField] ?? null, From 80ac579a476b558b143e3a1419a2a2c091c03183 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 16 Oct 2024 08:50:29 +0200 Subject: [PATCH 09/10] feat: refs #7584 modificaciones vistas con juan --- config/logs.yml | 1 + mylogger.js | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/logs.yml b/config/logs.yml index 6d35364..c7fa7fd 100644 --- a/config/logs.yml +++ b/config/logs.yml @@ -4,6 +4,7 @@ logMainShowField: false upperCaseTable: true userField: editorFk rowExcludeField: logExclude +ignoreSystem: false excludeRegex: '__$' showFields: - name diff --git a/mylogger.js b/mylogger.js index c53d3dc..2e8b6a7 100644 --- a/mylogger.js +++ b/mylogger.js @@ -523,10 +523,8 @@ module.exports = class MyLogger { `${logInfo.name}: ${originFk}, ${modelName}: ${modelId}` ); - const noInclude = tableInfo.rowExcludeField && !row.editorFk; - try { - if (isDelete && (!tableInfo.rowExcludeField || noInclude)) { + if (isDelete) { [[deleteRow]] = await logInfo.fetchStmt.execute([ modelName, modelId, originFk ]); @@ -542,7 +540,7 @@ module.exports = class MyLogger { } if (!conf.testMode && (!isDelete || !deleteRow)) { async function log(originFk) { - if (originFk == null || noInclude) return; + if (originFk == null) return; await logInfo.addStmt.execute([ originFk, row[tableInfo.userField] ?? null, From f75df4e19f64f232d73fa3b48227453acd2d117b Mon Sep 17 00:00:00 2001 From: robert Date: Fri, 18 Oct 2024 12:55:17 +0200 Subject: [PATCH 10/10] feat: refs #7584 ignoreSystem --- lib/model-loader.js | 3 ++- mylogger.js | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/model-loader.js b/lib/model-loader.js index 0c3a998..ca1663a 100644 --- a/lib/model-loader.js +++ b/lib/model-loader.js @@ -94,7 +94,8 @@ module.exports = class ModelLoader { ]; const globalProps = [ 'userField', - 'rowExcludeField' + 'rowExcludeField', + 'ignoreSystem' ]; for (const [schema, table, tableInfo] of schemaMap) { diff --git a/mylogger.js b/mylogger.js index 2e8b6a7..6700069 100644 --- a/mylogger.js +++ b/mylogger.js @@ -305,14 +305,16 @@ module.exports = class MyLogger { const table = evt.tableMap[evt.tableId]; const tableName = table.tableName; const tableInfo = this.schemaMap.get(table.parentSchema, tableName); + if (!tableInfo) return; - + const action = actions[eventName]; - const {rowExcludeField} = tableInfo; + const {rowExcludeField, ignoreSystem} = tableInfo; const changes = []; function isExcluded(row) { - return rowExcludeField && row[rowExcludeField]; + return (rowExcludeField && row[rowExcludeField]) + || (ignoreSystem && row.editorFk == null); } function cast(value, type) {