Compare commits

..

No commits in common. "main" and "e26ee50faf1c1152886a954e0028418a602eab52" have entirely different histories.

5 changed files with 79 additions and 18 deletions

View File

@ -21,6 +21,7 @@ module.exports = {
sourceType: "module",
},
plugins: [
"eslint-plugin-jsdoc",
"eslint-plugin-prefer-arrow",
"@typescript-eslint",
],

View File

@ -3,7 +3,6 @@
"version": "1.0.0",
"description": "Typescript common and web utils",
"main": "dist/index.js",
"source": "src/index.ts",
"scripts": {
"start": "tsc -w",
"build": "rm -rf dist && tsc",
@ -27,6 +26,7 @@
"@typescript-eslint/parser": "^4.30.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-jsdoc": "^36.0.8",
"eslint-plugin-prefer-arrow": "^1.2.3",
"husky": "^7.0.2",
"lint-staged": "^11.1.2",
@ -39,4 +39,4 @@
"lint-staged": {
"**/*": "prettier --write --ignore-unknown"
}
}
}

View File

@ -1,16 +1,16 @@
import { formatDate, formatDateOnly, formatDateFromTimestamp } from "./date"
import { debug, info, error, warn } from "./log"
import { parse2Int, parse2IntOrNull, parseToBoolean } from "./number/parser"
// import { formatDate, formatDateOnly, formatDateFromTimestamp } from "./date"
// import { debug, info,error, warn } from './log'
// import { parse2Int, parse2IntOrNull, parseToBoolean } from "./number/parser"
export {
formatDate,
formatDateOnly,
formatDateFromTimestamp,
debug,
info,
error,
warn,
parse2Int,
parse2IntOrNull,
parseToBoolean,
}
// export {
// formatDate,
// formatDateOnly,
// formatDateFromTimestamp,
// debug,
// info,
// error,
// warn,
// parse2Int,
// parse2IntOrNull,
// parseToBoolean,
// }

View File

@ -1,7 +1,8 @@
import chalk from "chalk"
import { formatDate } from "../date"
import Logger from "./writter"
const logger = console
let logger = Logger.getProvider()
const prefixColor = (
prefix: string,
@ -9,6 +10,10 @@ const prefixColor = (
color: string = "green"
) => {
const timestamp = formatDate(new Date())
if (Logger.isEnabled()) {
return `[${timestamp}] - ${prefix}: ${message}`
}
const firstStep = chalk`[${timestamp}] - {${color} ${prefix}}:`
return `${firstStep} ${message}`
}

55
src/log/writter.ts Normal file
View File

@ -0,0 +1,55 @@
import * as fs from "fs"
import { Console } from "console"
import * as path from "path"
import { formatDateOnly } from "../date"
class Logger {
private static enabled: boolean = false
public static setEnabled(enabled: boolean): void {
this.enabled = enabled
}
public static isEnabled(): boolean {
return this.enabled
}
private static logDir?: string
public static setLogDir(logDir: string): void {
this.logDir = logDir
}
public static getLogDir(): string | null | undefined {
return this.logDir
}
public static getProvider(): Console {
if (this.isEnabled()) {
const rootPath = path.resolve(this.getLogDir() || "./")
const logPath = `${rootPath}/logs`
if (!fs.existsSync(logPath)) {
fs.mkdirSync(logPath, { recursive: true })
}
const time = formatDateOnly(new Date()).replace(/\//g, "-")
console.log("Logs writing to path =>", logPath)
const output = fs.createWriteStream(
`${logPath}/stdout-${time}.log`,
{
flags: "a",
}
)
const errorOutput = fs.createWriteStream(
`${logPath}/stderr-${time}.log`,
{
flags: "a",
}
)
return new Console({ stdout: output, stderr: errorOutput })
}
return console
}
}
export default Logger