node.js日志封装
var log4js = require("log4js"); function init(_log_filepath, _log_filename) { let logfile = _log_filepath + "/" + _log_filename + ".log"; let logfile_error = _log_filepath + "/" + _log_filename + ".error.log"; let layout = { type: "pattern", pattern: "[%d{yyyy-MM-dd hh:mm:ss.SSS}] [%p] %m", }; log4js.configure({ appenders: { console: { type: "console", layout: layout, }, file: { // file只是个标识字符串,可以是任意 type: "fileSync", filename: logfile, maxLogSize: 10 * 1024 * 1024, // 10MB backups: 10, layout: layout, }, file_error: { type: "fileSync", filename: logfile_error, maxLogSize: 1024 * 1024, // 10MB backups: 5, layout: layout, }, }, categories: { default: { appenders: ["file", "console"], level: "trace" }, curstom_error: { appenders: ["file_error"], level: "warn" }, }, }); var logger = log4js.getLogger(""); var logger_curstom_error = log4js.getLogger("curstom_error"); //=============================================================== // Logger // 封装参考:https://stackoverflow.com/questions/56097580/override-console-logerror-with-winston-no-longer-working/56098264 // v1 // console.trace = (...args) => logger.trace.call(logger, ...args); // console.debug = (...args) => logger.debug.call(logger, ...args); // console.info = (...args) => logger.info.call(logger, ...args); // console.log = (...args) => logger.info.call(logger, ...args); // console.warn = (...args) => logger.warn.call(logger, ...args); // console.error = (...args) => logger.error.call(logger, ...args); // v2 console.trace = function (...args) { logger_curstom_error.trace.call(logger_curstom_error, ...args); return logger.trace.call(logger, ...args); }; console.debug = function (...args) { logger_curstom_error.debug.call(logger_curstom_error, ...args); return logger.debug.call(logger, ...args); }; console.info = function (...args) { logger_curstom_error.info.call(logger_curstom_error, ...args); return logger.info.call(logger, ...args); }; console.log = function (...args) { logger_curstom_error.info.call(logger_curstom_error, ...args); return logger.info.call(logger, ...args); }; console.warn = function (...args) { logger_curstom_error.warn.call(logger_curstom_error, ...args); return logger.warn.call(logger, ...args); }; console.error = function (...args) { logger_curstom_error.error.call(logger_curstom_error, ...args); return logger.error.call(logger, ...args); }; } module.exports = { init: init, };
使用:
var logwrap = require("./util/logwrap.js");
let filename = __filename.slice(__dirname.length + 1);
logwrap.init("./bin", filename);
后面可以正常的console.log,console.error了
github项目weiqi_picture_spider(私)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)