codimd/lib/logger.ts
Raccoon d1a440e7bd
refactor logger export
Signed-off-by: Raccoon <raccoon@hackmd.io>
2021-06-16 18:35:32 +08:00

51 lines
1.1 KiB
TypeScript

// Do not require any relative module in this file, will caused circular dependencies.
import {createLogger, format, transports, Logger} from "winston";
type CodiMDLogger = Logger & {
morganLog?: {
write: (message: string) => void
}
setLevel?: (string) => void
}
let defaultFormatter = format.combine(
format.timestamp(),
format.splat(),
format.json()
)
if (process.env.NODE_ENV === 'development' || !process.env.NODE_ENV) {
defaultFormatter = format.combine(
format.timestamp(),
format.align(),
format.splat(),
format.prettyPrint(),
format.colorize(),
format.errors({stack: true}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
)
}
export const logger: CodiMDLogger = createLogger({
format: defaultFormatter,
transports: [
new transports.Console({
handleExceptions: true
})
],
exitOnError: false
})
// for morgan used
logger.morganLog = {
write: buffer => {
logger.http(buffer.trim())
}
}
logger.setLevel = function (level) {
logger.level = level
}
export default logger