超简单的nodejs使用log4js保存日志到本地(可直接复制使用)

引入依赖

npm install log4js

新建配置文件logUtil.js

const log4js = require('log4js');// 日志配置
log4js.configure({appenders: {// 控制台输出consoleAppender: { type: 'console' },// 文件输出fileAppender: {type: 'dateFile',filename: './logs/default',  //日志文件的存储名alwaysIncludePattern: true,  //(可选,默认false)将模式包含在当前日志文件的名称以及备份中pattern: "yyyy-MM-dd.log",encoding: 'utf-8', //(可选,默认为utf-8)文件数据的存储编码maxLogSize: 1024 * 1024 * 1 // 文件最大存储空间}},categories: {// 设置默认所有日志都记录default: { appenders: ['consoleAppender', 'fileAppender'], level: 'all' } }
});module.exports = log4js

在服务文件index.js中设置全局引用

const log4js = require('../utils/logUtil')// 引入log4js配置,初始化全局对象
const logger = log4js.getLogger('default'); // 使用默认类别
global.logger = logger // 赋值给全局对象【logger】,也可以直接替换【console】
// global.console = logger// 捕获未抓捕的异常,例如进程突然挂掉时的报错
process.on('uncaughtException', function (err) {logger.error(err.stack) // 保存错误的调用栈
});

 然后就可以在所有js文件中通过使用如下方法打印日志了,打印的日志会同时输出在控制台及保存到本地文件夹中

// 不同类型的输出
logger.log('log')
logger.info('info')
logger.error('error')
logger.debug('debug')
logger.warn('warn')
logger.trace('trace')
logger.fatal('fatal')
logger.mark('mark')
// object类型的输出,可以使用【JSON.stringify(obj, null, 2)】的格式来输出
logger.error('------------------login fail-------------------')
logger.error('result : \n' + JSON.stringify(obj, null, 2))
logger.error('message : ' +  message)
logger.error('time : ' + nowTime)
logger.error('-----------------------------------------------')

 效果如下:

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

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

相关文章

如何从0构建一款类似pytest的工具

Pytest主要模块 Pytest 是一个强大且灵活的测试框架,它通过一系列步骤来发现和运行测试。其核心工作原理包括以下几个方面:测试发现:Pytest 会遍历指定目录下的所有文件,找到以 test_ 开头或 _test.py 结尾的文件,并且…

MS-Net: A Multi-Path Sparse Model for Motion Prediction in Multi-Scenes

MS-Net: A Multi-Path Sparse Model for Motion Prediction in Multi-Scenes 基本信息 期刊:IEEE ROBOTICS AND AUTOMATION LETTERS (IF 4.6 SCI3区)单位:同济大学,上海人工智能实验室时间:2023年12月数据…

架构师必知的绝活-JVM调优

前言 为什么要学JVM? 首先:面试需要 了解JVM能帮助回答面试中的复杂问题。面试中涉及到的JVM相关问题层出不穷,难道每次面试都靠背几百上千条面试八股? 其次:基础知识决定上层建筑 自己写的代码都不知道是怎么回事&a…

C++中的虚函数表结构框架

一.虚函数表介绍 Virtual Table虚函数表是实现多态的 每个有虚函数的类的实现,都有个指向虚函数的指针表(不管是父类还是子类) 指向虚表的指针是作为数据成员存在实例对象中 当调用虚函数时,就去查找对象的虚表中指向整顿派生类函…

Bayes分类器设计

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在AI学习笔记&#…

每日一题——Python实现PAT乙级1059 C语言竞赛(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 时间复杂度分析 空间复杂度分析 代码优化建议 总结 我要更强 优化方法…

.NET周刊【6月第4期 2024-06-23】

国内文章 C#.Net筑基-集合知识全解 https://www.cnblogs.com/anding/p/18229596 .Net中提供了数组、列表、字典等多种集合类型,分为泛型和非泛型集合。泛型集合具有更好的性能和类型安全性。集合的基础接口包括IEnumerator、IEnumerable、ICollection、IList、ID…

Gradio 4.37.1官方教程二:Blocks

文章目录 一、Blocks及事件监听器1.1 Blocks结构1.2 事件监听器的类型1.3 多数据流1.4 多输入组件1.5 多输出组件1.6 更新组件配置1.7 添加示例1.8 连续运行事件1.9 持续运行事件1.9.1 every参数1.9.2 load方法1.9.3 change方法 1.10 收集事件数据1.11 绑定多个触发器到同一函数…

基于线调频小波变换的一维时间序列时频分析方法(MATLAB)

在机械故障诊断领域,振动信号的处理常采用以快速傅立叶变换为基础的相关分析、幅值分析、频谱分析等时域和频域分析方法。但经典的FFT存在固有缺点,即它虽然在频域范围内是完全局部化的,但是它不包含任何时域信息,因而不适于分析非平稳信号。近年来涌现的各种时频分析方法(短时…

【刷题】初步认识深搜(DFS)

送给大家一句话: 拥有希望的人,和漫天的星星一样,是永远不会孤独的。 -- 《星游记》 初步认识深搜(DFS) dfs算法二叉树中的深搜Leetcode 129. 求根节点到叶节点数字之和题目描述算法思路 Leetcode 814. 二叉树剪枝题…

Redis-实战篇-缓存更新策略(内存淘汰、超时剔除、主动更新)

文章目录 1、缓存更新策略1.1、内存淘汰1.2、超时剔除1.3、主动更新 2、业务场景:3、主动更新在企业中业务实现有三种方式3.1、Cache Aside Pattern3.1.1、操作缓存和数据库时有三个问题需要考虑:3.1.1.1、删除缓存还是更新缓存?3.1.1.2、如何…

数据同步软件有哪些

数据同步软件有哪些呢?随着企业规模的扩大,企业数据也积累得越来越多,万一发生宕机风险,那么这个损失将不可估量。所以为了容灾备用,我们往往需要将数据同步到另一台备胎服务器上,进行冗余。 那么需要同步的…

centos7.9 python3环境(virtualenv)搭建及所遇错误

人望山,鱼窥荷,真正喜欢想要的,没有一样可以轻易得到。 目录 # 1. 解决版本冲突问题--建议不要跳过(一定要查看软链接是否链接正确) # 2. python3(virtualenv)环境搭建 # 3. virtualenv常用命令 # 4. 所遇错误解析 ## 4.1 遇到 No modul…

惠海 H6246低功耗DC/DC降压型恒压芯片60V降3.3V5V12V 蓝牙模块 单片机供电

1.产品描述 H6246是一种内置60V耐压MOS,支持输入高达48V的高压降压开关控制器,可以向负载提供0.3A的连续电流。H6246支持输出恒定电压,可以通过调节VFB采样电阻来设置输出电压,同时支持最大电流限制,可以通过修改CS采…

操作系统期末复习考题二

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、前言🚀🚀🚀二、正文☀️☀️☀️三、总结🍓🍓🍓 一、前言🚀🚀&am…

【资源调度】1-何为调度?

导读:本期是全网最全【资源调度】系列推文的第1期(共50期左右)。我们将对调度的定义与作用、计划与调度的关系、调度问题的拆解做出详细介绍,使大家对【资源调度】问题有了一个整体的认识,为后续的内容奠定基础。 作者1:张哲铭&am…

个人搭建cppreference网站

近日,由于购买的腾讯云服务器要过期了,之前在服务器搭建的cppreference也要重新搭建,故写下此文章 cppreference的访问速度也慢,故自己WSL子系统简单搭键一下是个不错的选择 环境准备 首先,自己先安装Nginx,在网上找安装教程即可下载cppreference网站资源包:https://pan.baidu…

RFID固定资产管理系统在企业中的应用与优势

随着企业资产规模的不断扩大和管理复杂性的增加,传统的资产管理方式已无法满足企业高效管理的需求。RFID固定资产管理系统凭借其高效、准确、实时的特点,成为企业固定资产管理的新宠。 一、什么是RFID固定资产管理系统 RFID(无线射频识别&…

使用AI工具 Baidu Comate 辅助编码 快速定位修改Bug

一、Baidu Comate 概述 Baidu Comate(百度智能编码助手)是一款基于文心大模型的新一代编码辅助工具。它结合了百度多年积累的编程现场大数据和外部优秀开源数据,旨在为用户提供高质量的编程代码生成和优化服务。Comate的主要目标是提升编码效…

帮助某服务业公司制定发展战略与未来规划

在集团公司高速发展、业务范围不断扩大时,组织往往对公司未来的发展方向感到迷茫,不知道如何进行更好的规划,找到合适的发展战略,为企业提供更长远的发展空间,带来更多是利益。面对这个问题,华恒智信认为企…