Nodejs日志库winston配置
为什么80%的码农都做不了架构师?>>>
const config = require('config');
const winston = require('winston');
const path = require('path');
const dailyRoateFile = require('winston-daily-rotate-file');// logger directory
let defaultLogDir = 'logs';
if (config.has('logger.path')) {defaultLogDir = config.get('logger.path');
}
const logDir = path.join(path.dirname(__dirname), defaultLogDir);// logger exception file
const exceptionFile = path.join(logDir, 'exceptions.log');
// logger error file
const errorFile = path.join(logDir, 'error.log');
// logger app file
const logFile = path.join(logDir, 'app-%DATE%.log');// logger level
let defaultLogLevel = 'debug';
if (config.has('logger.level')) {defaultLogLevel = config.get('logger.level');
}// logger rotate maxSize
let defaultMaxSize = '50m';
if (config.has('logger.maxSize')) {defaultMaxSize = config.get('logger.maxSize');
}
// logger rotate maxFiles
let defaultMaxFiles = '14d';
if (config.has('logger.maxFiles')) {defaultMaxFiles = config.get('logger.maxFiles');
}// logger formatter
const formatter = winston.format.combine(// string use util.formatwinston.format.splat(),// timestamp to formatwinston.format.timestamp({format: 'YYYY-MM-DD HH:mm:ss.SSS'}),winston.format.printf(info => {return `${info.timestamp} ${info.level}:${info.message}`;})
);// logger transports
const logTransports = [new winston.transports.File({level: 'error',filename: errorFile}),new dailyRoateFile({filename: logFile,datePattern: 'YYYY-MM-DD-HH',maxFiles: defaultMaxFiles,maxSize: defaultMaxSize})
];// create logger instance
const logger = winston.createLogger({level: defaultLogLevel,format: formatter,transports: logTransports,exceptionHandlers: [new winston.transports.File({filename: exceptionFile})],exitOnError: false
});if (process.env['NODE_ENV'] !== 'production') {logger.add(new winston.transports.Console({format: formatter}));
}module.exports = logger;
转载于:https://my.oschina.net/thmz/blog/3035320
Nodejs日志库winston配置相关推荐
- 日志库 winston 的学习笔记 - logger.info 的实现原理单步调试
按照这篇文章日志库 winston 的学习笔记 - 创建一个使用 winston 的 Node.js 应用里的代码,对下列方法进行单步调试: 因为我们调用的是 info 方法,所以生成的日志,leve ...
- 日志库 winston 的学习笔记 - 创建一个使用 winston 的 Node.js 应用
winston 被设计为一个简单且通用的日志库,支持多种传输. 传输本质上是日志的存储设备. 每个 winston 记录器都可以在不同级别配置多个存储渠道.例如,人们可能希望将错误日志存储在持久的远程 ...
- 日志库 winston 的学习笔记 - logger.info 打印到控制台上的实现原理
if (process.env.NODE_ENV !== 'production') {logger.add(new winston.transports.Console({format: winst ...
- golang高性能日志库zap的使用
本文作者:陈进坚 个人博客:https://jian1098.github.io CSDN博客:https://blog.csdn.net/c_jian 简书:https://www.jianshu. ...
- 日志库EasyLogging++学习系列(5)—— 辅助配置功能
正如前面<日志库EasyLogging++学习系列(3)-- 配置功能>文中最后提到的,在某些应用场景下,我们还需要通过其他的一些配置手段来辅助我们完成某些特殊功能,这些辅助配置手段包括设 ...
- 日志库EasyLogging++学习系列(3)—— 配置功能
在前面的文章 <日志库Easylogging++学习系列(1) -- 简要介绍 >中,我们已经初步见识到了 Easylogging++ 日志库强大的配置功能.那么配置文件中各个字段的意义是 ...
- java applog_Java Web App: 选择与配置日志库
Java世界里,日志库就和许多其他库[1]一样,你有多个选择,多个还不错的选择,比如log4j, java.util.logging, logback, 另外还有一些统一的log api,比如slf4 ...
- Go开发中配置一个Logger日志的功能实现(结合zap日志库)
为什么需要Logger 一般在开发项目的时候我们都是需要一个存储日志的文件,因为在部署项目以后,我们只能通过去筛查日志进行检索问题,这时候日志是否可以呈现清晰这个对于我们进行排查工作是十分重要的,所以 ...
- 介绍一个使用 Go 语言开发的高性能可配置可扩展的日志库 logit
这是一个使用 Go 语言开发的高性能可配置可扩展的日志库,名字叫 logit. logit 是一个高性能的日志库,从测试结果来看,比主流日志库 zap.logrus 这些要快不少. logit 支持配 ...
最新文章
- Oracle系统用户的默认密码及功能
- 【模型解读】network in network中的1*1卷积,你懂了吗
- win10下git的配置教程
- VM虚拟机运行Windows11出现蓝屏
- Python面向对象简单继承
- [Java基础]反射获取成员变量并使用
- JavaScript 'Pig latin is cool'=='igPay atinlay siay oolcay'
- php 回收png,关于php:从其他Png中减去Png,保留透明度,ImageMagick
- html 倒计时字体消失,最简单的一个网页倒计时代码 时间到期后会显示出提醒内容 收藏版...
- 搭建顶级域名下的个人博客网站
- c语言字符括号怎么表示什么意思,请问C语言中的bioskey(0)是啥意思,括号里的值又有啥用?...
- cnapckSurround c++builder Region 代码折叠快捷键
- 曙光服务器bios开启vt虚拟化,BIOS怎么开启虚拟化技术VT
- msdn下载的系统怎么安装
- Echert 缩放后切换再数据,缩放大小没还原的解决办法
- 全开源!智能灯串开发资料全开源!为这个冬天装点烂漫“星空”
- 2018最新win10激活密匙
- 直播源 直播地址 测试地址 http rtsp rtmp hls 短视频测试地址
- 电影《中国合伙人》中的管理知识
- 第二章:EB编译环境Keil的配置(s32k144)