koa2项目中封装log4js日志输出

1.日志输出到控制台

npm i log4js -D

封装log4js文件:

注意:每次都要重新获取log4js.getLogger('debug')级别才能生效

const log4js = require("log4js");const levels = {'trace': log4js.levels.TRACE,'debug': log4js.levels.DEBUG,'info': log4js.levels.INFO,'warn': log4js.levels.WARN,'error': log4js.levels.ERROR,'fatal': log4js.levels.FATAL
}log4js.configure({appenders:{// 输出日志到控制台console: { type: 'console' }},categories:{default: { appenders: ['console'], level: 'debug' },}
});/*** 日志输出 level 为 debug*/
exports.debug = (content) => {
//注意:每次都要重新获取log4js.getLogger('debug')级别才能生效let logger = log4js.getLogger('debug')logger.level = levels.debuglogger.debug(content);}exports.info = (content) =>{let logger = log4js.getLogger('info')logger.level = levels.infologger.info(content);
}exports.warn = (content) =>{let logger = log4js.getLogger('warn')logger.level = levels.warnlogger.warn(content);
}exports.error = (content) =>{let logger = log4js.getLogger('error')logger.level = levels.errorlogger.error(content);
}

app.js文件中引入并使用log4js

// 使用封装的log4j日志
const logger = require("./utils/log4js");// logger
app.use(async (ctx, next) => {const start = new Date()await next()const ms = new Date() - start// console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)// 使用log4j输出日志logger.info(`log4j输出日志:读取到log4js日志`);logger.info(`log4j输出日志:${ctx.method} ${ctx.url} - ${ms}ms`);
})

 

2.日志输出到日志文件

修改配置为输出到文件即可

const log4js = require("log4js");const levels = {'trace': log4js.levels.TRACE,'debug': log4js.levels.DEBUG,'info': log4js.levels.INFO,'warn': log4js.levels.WARN,'error': log4js.levels.ERROR,'fatal': log4js.levels.FATAL
}log4js.configure({appenders:{// 输出日志到控制台console: { type: 'console' },// 输出日志到日志文件info:{type: 'file',filename: 'logs/info-logs.log'},error:{type: 'dateFile',filename: 'logs/error',pattern: 'yyyy-MM-dd.log',// 设置文件名称是 filename + patternalwaysIncludePattern: true}},categories:{default: { appenders: ['console'], level: 'debug' },info: {appenders: ["info","console"],level: 'info'},error:{appenders: ["error","console"],level: 'error'}}
});/*** 日志输出 level 为 debug*/
exports.debug = (content) => {let logger = log4js.getLogger('debug')logger.level = levels.debuglogger.debug(content);}exports.info = (content) =>{let logger = log4js.getLogger('info')logger.level = levels.infologger.info(content);
}exports.warn = (content) =>{let logger = log4js.getLogger('warn')logger.level = levels.warnlogger.warn(content);
}exports.error = (content) =>{let logger = log4js.getLogger('error')logger.level = levels.errorlogger.error(content);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235165.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS 在性能优化方面的实践

前言 CSS(层叠样式表)是一种用于描述网页外观和格式的语言。随着网页变得越来越复杂,CSS文件的大小也随之增加,这可能会对网页性能产生负面 .box {width: 100px;height: 100px;transition: transform 0.3s; }.box:hover {transf…

MySQL之binlog日志

聊聊BINLOG binlog记录什么? MySQL server中所有的搜索引擎发生了更新(DDL和DML)都会产生binlog日志,记录的是语句的原始逻辑 为什么需要binlog? binlog主要有两个应用场景,一是数据复制,在…

IPv6+2.0网络切片技术在电子政务网的应用实践详解

IPv6是面向5G、云网/算网融合的智能IP技术,具有包含可编程路径、快速业务发放、自动化运维、质量可视化、SLA保障和应用感知等特点。IPv6将万物互联提升到了万物智联,赋能百行百业高质量数字化转型。 图示:“IPv6”技术创新体系发展的三个阶段…

高级IO select 多路转接实现思路

文章目录 select 函数fd_set 类型timeval 结构体select 函数的基本使用流程文件描述符就绪条件以select函数为中心实现多路转接的思路select 缺陷 select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); selec…

BUUCTF john-in-the-middle 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 注意:得到的 flag 请包上 flag{} 提交 密文: 下载附件,解压得到john-in-the-middle.pcap文件。 解题思路: 1、双击文件,打开wireshark。 看到很多http流…

滴滴系统故障后续 补偿所有用户补 10 元无门槛打车通用券

滴滴出行就11月27日夜间发生的系统故障发布了详细说明,并再次向所有用户致以歉意。作为补偿措施,滴滴还向所有用户发送了一张“致歉补偿券”,可无门槛使用,立减10元。 大家可以登录APP领取。 滴滴表示,目前滴滴App的所…

高效解决在本地打开可视化服务器端的tensorboard

文章目录 问题解决方案 问题 由于连着远程服务器构建模型,但是想在本地可视化却做不到,不要想当然天真的以为CTRLC点击链接http://localhost:6006就真能在本地打开tensorboard。你电脑都没连接服务器,只是pycharm连上了而已 解决方案 你需要…

C语言--每日选择题--Day31

第一题 1. 下面程序 i 的值为() int main() {int i 10;int j 0;if (j 0)i; elsei--; return 0; } A:11 B:9 答案及解析 B if语句中的条件判断为赋值语句的时候,因为赋值语句的返回值是右操作数; …

Flask SocketIO 实现动态绘图

Flask-SocketIO 是基于 Flask 的一个扩展,用于简化在 Flask 应用中集成 WebSocket 功能。WebSocket 是一种在客户端和服务器之间实现实时双向通信的协议,常用于实现实时性要求较高的应用,如聊天应用、实时通知等,使得开发者可以更…

ps 透明印章制作

ps 透明印章制作 1、打开不透明印章2、抠出红色印章3、新建图层4、填充红色印章到新图层5、导出透明印章 1、打开不透明印章 打开ps软件,菜单栏选择 文件-打开 选择本地不透明印章 打开 2、抠出红色印章 ps菜单栏 选择 选择-色彩范围 点击色彩范围 色彩范围窗口 取…

【Qt基础之QPalette实例电子时钟】

# 简介 借助`QLCDNumber`实现电子时钟,可以随意拖拽到桌面任意位置,鼠标右键进行关闭,用于实践`QPalette`类、`QTimer`的使用以及`mousePressEvent`\`mouseMoveEvent`\`mouseDoubleClickEvent`事件处理函数的使用。可在此基础上扩展其他应用,参看Qt帮助手册。 # QPalette …

网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』

🔭个人主页: 北 海 🛜所属专栏: 神奇的网络世界 💻操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌤️前言🌦️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议…