在Linux环境下,使用JavaScript(Node.js)时,可以通过多种方式设置日志格式。以下是几种常见的方法:
1. 使用 console.log 和自定义格式
最简单的方法是使用 console.log 并手动拼接字符串来定义日志格式。例如:
const timestamp = new Date().toISOString();
const logMessage = `[${timestamp}] [INFO] 这是一条日志信息`;
console.log(logMessage);
2. 使用第三方日志库
使用成熟的第三方日志库可以更灵活地管理日志格式、级别和输出。以下是一些流行的选择:
a. Winston
Winston 是一个功能强大的日志库,支持多种传输方式和格式化选项。
安装 Winston:
npm install winston
示例代码:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
winston.format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
})
),
transports: [
new winston.transports.Console(),
// 可以添加更多传输方式,如文件、HTTP等
// new winston.transports.File({ filename: 'error.log', level: 'error' })
// new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('这是一条信息日志');
logger.error('这是一条错误日志');
b. Pino
Pino 是一个高性能的日志库,适合需要高吞吐量的应用。
安装 Pino:
npm install pino
示例代码:
const pino = require('pino');
const logger = pino({
level: 'info',
transport: {
target: 'pino-pretty', // 可以使用 pino-pretty 在控制台美化输出
options: {
colorize: true
}
}
});
logger.info('这是一条信息日志');
logger.error('这是一条错误日志');
注意: 使用 pino-pretty 需要单独安装:
npm install pino-pretty
3. 使用环境变量配置日志格式
可以通过环境变量来动态设置日志格式,增强灵活性。例如,使用 Winston 结合环境变量:
const winston = require('winston');
const logFormat = process.env.LOG_FORMAT || 'combined';
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
logFormat === 'simple'
? winston.format.simple()
: winston.format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
})
),
transports: [
new winston.transports.Console()
]
});
logger.info('这是一条信息日志');
logger.error('这是一条错误日志');
然后,在运行脚本时设置环境变量:
LOG_FORMAT=simple node your_script.js
4. 日志轮转
对于需要长期保存日志的应用,建议使用日志轮转工具,如 winston-daily-rotate-file。
安装依赖:
npm install winston winston-daily-rotate-file
示例代码:
const winston = require('winston');
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
})
),
transports: [
transport
]
});
logger.info('这是一条信息日志');
logger.error('这是一条错误日志');
总结
根据项目需求选择合适的日志管理方案:
- 简单应用:使用
console.log结合自定义格式。 - 复杂应用:使用 Winston 或 Pino 等第三方库,支持丰富的格式化和传输选项。
- 长期日志管理:结合日志轮转工具,确保日志文件的可维护性。
通过合理配置日志格式,可以更好地监控和调试应用,提升开发和运维效率。
以上就是关于“Linux下JS日志格式怎么设置”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm