小编给大家分享一下如何搭建node服务实现日志处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
一、技术选型
二、基本概念
三、使用log4js
npm install log4js --save
yarn add log4js
const path = require('path');const log4js = require('log4js');// 配置log4jslog4js.configure({ appenders: { // 控制台输出 console: { type: 'console' }, // 日志文件 file: { type: 'file', filename: path.join(__dirname, '../../logs/server.log')} }, categories: { // 默认日志 default: { appenders: [ 'file', 'console' ], level: 'debug' }, }});// 获取默认日志const logger = log4js.getLogger();module.exports = logger;
server.js
再通过调用logger. info 输出INFO 级别的日志,这里web开发框架使用的Koa。
const Koa = require('koa');const router = require('./router');const logger = require('./util/log4jsLogger');const port = 3000;const app = new Koa() .use(router.routes()) .use(router.allowedMethods());app.listen(port, () => { logger.info(`Server running on port ${port}`);});
[2020-04-01T11:33:43.317] [INFO] default - Server running on port 3000
2020-04-01 11:33:43.317 [INFO] Server running on port 3000
// 自定义日志格式const layout = { type: 'pattern', pattern: '%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %m'};log4js.configure({ appenders: { // 控制台输出 console: { type: 'console' }, // 日志文件,通过设置layout 设置日志格式 file: { type: 'file', filename: path.join(__dirname, '../../logs/server.log'), layout} }, categories: { // 默认日志 default: { appenders: [ 'file', 'console' ], level: 'debug' }, }});
// 日志配置log4js.configure({ appenders: { // 控制台输出 console: { type: 'console' }, // 日志文件 file: { type: 'dateFile', filename: path.join(__dirname, '../../logs/server.log'), // 日志切割后文件名后缀格式 pattern: '.yyyy-MM-dd' } }, categories: { // 默认日志 default: { appenders: [ 'file', 'console' ], level: 'debug' }, }});
const path = require('path');const log4js = require('log4js');// 配置log4jslog4js.configure({ appenders: { // 控制台输出 console: { type: 'console' }, // 全部日志文件 allFile: { type: 'file', filename: path.join(__dirname, '../../logs/server.log')}, // 错误日志文件 errorFile: { type: 'file', filename: path.join(__dirname, '../../logs/server-error.log')} }, categories: { // 默认日志,输出debug 及以上级别的日志 default: { appenders: [ 'allFile', 'console' ], level: 'debug' }, // 错误日志,输出error 及以上级别的日志 error: { appenders: [ 'errorFile' ], level: 'error' }, }});// 获取默认日志const defaultLogger = log4js.getLogger();// 获取错误级别日志const errorLogger = log4js.getLogger('error');// 日志代理,同时调用默认日志和错误日志const loggerProxy = {};const levels = log4js.levels.levels;levels.forEach(level => { const curLevel = level.levelStr.toLowerCase(); loggerProxy[curLevel] = (...params) => { defaultLogger[curLevel](...params); errorLogger[curLevel](...params); }});module.exports = loggerProxy;
/** * 创建日志代理方法 * @param logLevel 日志级别 * @param logger 日志对象 * @return {function} */function createLogProxy (logLevel, logger) { return (...param) => { logger[logLevel](...param); };}console.log = createLogProxy('debug', logger);console.info = createLogProxy('info', logger);console.warn = createLogProxy('warn', logger);console.error = createLogProxy('error', logger);
看完了这篇文章,相信你对“如何搭建node服务实现日志处理”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4007037/blog/4387545