machines/products/poly-mech/tasks/log.ts
2024-08-18 21:05:57 +02:00

88 lines
3.1 KiB
TypeScript

import * as path from 'path'
import * as pMap from 'p-map'
import { CONFIG_DEFAULT } from '@plastichub/osr-cli-commons'
import { resolve } from '@plastichub/osr-cli-commons/fs'
import { files } from '@plastichub/osr-cli-commons/glob'
import { sync as cp } from '@plastichub/fs/copy'
import { sync as exists } from '@plastichub/fs/exists'
import { sync as rm } from '@plastichub/fs/remove'
import { sync as read } from '@plastichub/fs/read'
import { sync as write } from '@plastichub/fs/write'
import { logger as _logger } from '@plastichub/core/debug'
import * as ExifReader from 'exifreader'
import { Logger, TTransportLogger, ILogObject } from 'tslog'
import { createStream } from "rotating-file-stream"
import { sanitize } from '@plastichub/osr-i18n/_cli'
import { translateText } from '@plastichub/osr-i18n/lib/translate'
import { IOptions as IOptionsI18n } from '@plastichub/osr-i18n/types'
import { translate } from '@plastichub/osr-i18n/lib/translate'
import { resize, getResizePatterns, format, getFormats, meta } from '@plastichub/osr-media/lib/media/images'
import {
ENABLED_PRODUCTS, I18N_SOURCE_LANGUAGE, I18N_STORE,
LANGUAGES,
OSRL_ENV, OSRL_LANG_FLAVOR,
OSRL_MODULE_NAME, OSR_ROOT, PRODUCTS_TARGET_SRC, PRODUCT_CONFIG, PRODUCT_HUGO_TEMPLATE, OSRL_PRODUCT_PROFILE, PRODUCT_ROOT, PRODUCT_DIR,
OSRL_ENVIRONMENT,
RETAIL_LOG_LEVEL_I18N_PRODUCT_ASSETS,
TASK_CONFIG_LOG_DIRECTORY
} from './config'
import { GalleryImage } from './images'
const debug = false
const verbose = true
const logger = _logger('ph-site')
const IMAGES_GLOB = '*.+(JPG|jpg|png|PNG|gif)'
const _convertProductMedia = true
const _translateProductAssets = true
const _populateProductDefaults = true
export const createSubLogger = (root: Logger, level: string, name: string): Logger => {
const ret = root.getChildLogger({
name,
type: "pretty",
displayInstanceName: true,
displayFilePath: 'hidden',
instanceName: name,
displayFunctionName: true,
displayRequestId: true,
displayLogLevel: true,
colorizePrettyLogs: true,
hostname: "osr-cli",
displayLoggerName: true,
displayTypes: false,
prefix: ["\n\t "],
})
const logFile = path.resolve(resolve(`${TASK_CONFIG_LOG_DIRECTORY}/${name}.log`))
const stream = createStream(logFile,
{
size: "10M", // rotate every 10 MegaBytes written
interval: "1d", // rotate daily
compress: "gzip", // compress rotated files
});
const transport = {
minLevel: level,
transportLogger: {
info: (logObject: ILogObject) => {
stream.write(JSON.stringify(logObject, null, 2) + "\n");
}
}
}
logger.attachTransport(transport.transportLogger as any, level as any)
return logger
}
export const writeTaskConfig = (taskName, config: any) => {
const file = path.resolve(resolve(`${TASK_CONFIG_LOG_DIRECTORY}/${taskName}.json`))
write(file, JSON.stringify(config, null, 2))
}