电商类公司网站应该怎么搭建,好大夫在线网站官网做提眉的医生,蛋糕店网站建设方案,查询海外whois的网站目录
简介
安装
配置
环境变量配置
日志级别和表配置
创建 Logger 实例
文件传输配置
控制台输出配置
完整代码
使用方法
记录信息日志
记录错误日志
记录警告日志
总结 简介
winston-mysql 是一个为 winston3.x 日志库设计的 MySQL 传输插件#xff0c;允许你…目录
简介
安装
配置
环境变量配置
日志级别和表配置
创建 Logger 实例
文件传输配置
控制台输出配置
完整代码
使用方法
记录信息日志
记录错误日志
记录警告日志
总结 简介
winston-mysql 是一个为 winston3.x 日志库设计的 MySQL 传输插件允许你在 Node.js 应用程序中将日志存储到 MySQL 数据库。这个插件支持自定义日志表字段和 JSON 格式的元数据字段适用于 MySQL 5.7 及以上版本。
安装
首先你需要在你的 MySQL 数据库中创建一个表来存储日志。以下是创建日志表的 SQL 语句示例
CREATE TABLE your_database_name.st_logs (id INT NOT NULL AUTO_INCREMENT,level VARCHAR(16) NOT NULL,message VARCHAR(2048) NOT NULL,meta VARCHAR(2048) NOT NULL,timestamp DATETIME NOT NULL,PRIMARY KEY (id)
);
然后通过 npm 安装 winston-mysql
$ npm install winston-mysql
配置
环境变量配置
在配置 winston-mysql 之前你需要从配置文件中读取数据库连接信息。这些信息通常存储在环境变量或配置文件中以确保安全性和灵活性。
const {MYSQL_HOST,MYSQL_USER,MYSQL_PWD,MYSQL_DB,
} require(../config/config.default);
这里MYSQL_HOST、MYSQL_USER、MYSQL_PWD 和 MYSQL_DB 是从配置文件中读取的数据库连接参数。
日志级别和表配置
winston-mysql 允许你为不同的日志级别设置不同的存储表。在以下配置中我们定义了一个名为 options_default 的对象其中包含了数据库连接信息和日志表名称。
const options_default {host: MYSQL_HOST,user: MYSQL_USER,password: MYSQL_PWD,database: MYSQL_DB,level: error,table: st_logs,
};
host: 数据库服务器地址。user: 数据库用户名。password: 数据库密码。database: 要连接的数据库名称。level: 此传输的日志级别默认为 error意味着只有 error 级别及以上的日志会被存储。table: 存储日志的表名。
创建 Logger 实例
使用 createLogger 函数创建一个 winston 日志记录器实例并配置其格式和传输方式。
const logger createLogger({level: info,format: format.json(),transports: [// ...其他传输配置new winstonMysql(options_default),],
});
level: 日志记录器的默认级别这里设置为 info意味着所有 info 级别及以上的日志都会被处理。format: 日志的格式这里使用 json 格式。
文件传输配置
除了将日志存储到数据库还可以将日志输出到文件。
new transports.File({filename: info.log,level: info,format: format.combine(format((info) (info.level info ? info : false))(),format.timestamp({ format: YYYY-MM-DD HH:mm:ss }),format.json()),
}),
filename: 日志文件的名称。level: 此文件传输的日志级别。format: 组合格式包括过滤 info 级别的日志、添加时间戳和 JSON 格式。
控制台输出配置
在非生产环境中你可能希望将日志输出到控制台。
if (process.env.NODE_ENV ! production) {logger.add(new transports.Console({format: format.combine(format.colorize(),format.simple()),}));
}
format.colorize(): 为日志添加颜色。format.simple(): 使用简单格式输出日志。
完整代码
const { createLogger, format, transports } require(winston);
const winstonMysql require(winston-mysql);const {MYSQL_HOST,MYSQL_USER,MYSQL_PWD,MYSQL_DB,
} require(../config/config.default);const options_default {host: MYSQL_HOST,user: MYSQL_USER,password: MYSQL_PWD,database: MYSQL_DB,level: error,table: st_logs,
};const logger createLogger({level: info,format: format.json(),transports: [new transports.File({filename: info.log,level: info,format: format.combine(format((info) (info.level info ? info : false))(),format.timestamp({ format: YYYY-MM-DD HH:mm:ss }),format.json()),}),new winstonMysql(options_default),],
});if (process.env.NODE_ENV ! production) {logger.add(new transports.Console({format: format.combine(format.colorize(),format.simple()),}));
}
使用方法
winston-mysql 提供了一些实用的日志方法你可以在你的应用程序中这样使用它们
const logInfo (message, meta {}) {logger.info(message, { ...meta });
};const logError (message, error, meta {}) {const errorObj error instanceof Error ? error : null;logger.error(message, {message: errorObj ? errorObj.message : error.message,stack: errorObj ? errorObj.stack : error.message,...meta,});
};const logWarn (message, meta {}) {logger.warn(message, { ...meta });
};
记录信息日志
logInfo(这是一条信息日志, { customField: customValue });
记录错误日志
logError(这是一条错误日志, new Error(出错了), { customField: customValue });
记录警告日志
logWarn(这是一条警告日志, { customField: customValue });
总结 Node Winston 日志工具详解-CSDN博客 Winston 日志工具详解 通过上述配置和方法你可以灵活地将日志存储到 MySQL 数据库并根据需要输出到文件和控制台。这为日志管理和问题排查提供了强大的支持。