+import { labelFormatter } from '../server/helpers/logger'
+import { CONFIG } from '../server/initializers/config'
+import { mtimeSortFilesDesc } from '../shared/core-utils/logs/logs'
+import { inspect } from 'util'
+import { format as sqlFormat } from 'sql-formatter'
+
+program
+ .option('-l, --level [level]', 'Level log (debug/info/warn/error)')
+ .option('-f, --files [file...]', 'Files to parse. If not provided, the script will parse the latest log file from config)')
+ .option('-t, --tags [tags...]', 'Display only lines with these tags')
+ .option('-nt, --not-tags [tags...]', 'Donrt display lines containing these tags')
+ .parse(process.argv)
+
+const options = program.opts()
+
+const excludedKeys = {
+ level: true,
+ message: true,
+ splat: true,
+ timestamp: true,
+ tags: true,
+ label: true,
+ sql: true
+}
+function keysExcluder (key, value) {
+ return excludedKeys[key] === true ? undefined : value
+}
+
+const loggerFormat = winston.format.printf((info) => {
+ let additionalInfos = JSON.stringify(info, keysExcluder, 2)
+ if (additionalInfos === '{}') additionalInfos = ''
+ else additionalInfos = ' ' + additionalInfos
+
+ if (info.sql) {
+ if (CONFIG.LOG.PRETTIFY_SQL) {
+ additionalInfos += '\n' + sqlFormat(info.sql, {
+ language: 'sql',
+ indent: ' '
+ })
+ } else {
+ additionalInfos += ' - ' + info.sql
+ }
+ }