js实现log
实现 JavaScript 的日志功能
在 JavaScript 中实现日志功能可以通过多种方式完成,以下是一些常见的方法:
使用 console 对象
JavaScript 内置了 console 对象,提供了多种日志输出方法:
console.log('普通日志信息');
console.info('提示性信息');
console.warn('警告信息');
console.error('错误信息');
console.debug('调试信息');
自定义日志函数
可以创建自定义的日志函数,增加更多控制功能:
function log(message, level = 'info') {
const timestamp = new Date().toISOString();
const levels = {
error: '\x1b[31m', // 红色
warn: '\x1b[33m', // 黄色
info: '\x1b[32m', // 绿色
debug: '\x1b[36m' // 青色
};
const reset = '\x1b[0m';
console.log(`${levels[level] || ''}[${timestamp}] [${level.toUpperCase()}] ${message}${reset}`);
}
log('这是一个信息', 'info');
log('这是一个警告', 'warn');
log('这是一个错误', 'error');
日志级别控制
可以添加日志级别控制,只输出特定级别以上的日志:
const LOG_LEVELS = {
DEBUG: 0,
INFO: 1,
WARN: 2,
ERROR: 3,
NONE: 4
};
let currentLogLevel = LOG_LEVELS.INFO;
function setLogLevel(level) {
currentLogLevel = LOG_LEVELS[level] ?? LOG_LEVELS.INFO;
}
function log(message, level = 'info') {
if (LOG_LEVELS[level.toUpperCase()] >= currentLogLevel) {
console.log(`[${level.toUpperCase()}] ${message}`);
}
}
浏览器中的增强日志
在浏览器环境中,可以使用 CSS 样式增强日志输出:
console.log('%c重要信息', 'color: red; font-weight: bold; font-size: 16px;');
console.log('%c背景信息', 'background: #eee; color: #666; padding: 2px 5px;');
Node.js 中的日志
在 Node.js 环境中,可以使用专门的日志库如 winston 或 pino:
// 使用 winston 示例
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('信息消息');
logger.error('错误消息');
性能日志
可以使用 console.time 和 console.timeEnd 记录性能:
console.time('耗时操作');
// 执行一些操作
console.timeEnd('耗时操作');
以上方法可以根据具体需求选择使用,简单的日志可以直接使用 console 对象,复杂的日志系统可以考虑使用专门的日志库。







