如何在Node.js中使用Winston将日志存储到mysql数据库中

适当的

我正在使用Winston记录我的应用程序。我已经使用此文件进行了传输:

class LoggerHelper extends BaseHelper {

constructor(_cApp) {
    super(_cApp);
    this._props = {};
}

initialize() {
    this._prepareConfigs();
    this._createTransportObj();
    this._createLoggerObj();
}

_prepareConfigs() {
    this._props.dirname = this._configs.logsFolder;
    this._props.filename = this._configs.filenameConvention;
    this._props.datePattern = this._configs.datePattern;
    this._props.maxSize = this._configs.maxSize;
    this._props.level = this._configs.level;
    this._props.timestamp = this._configs.timestamp;
    this._props.prettyPrint = this._configs.prettyPrint;
}

_createTransportObj() {
    var DailyRotateFile = winston.transports.DailyRotateFile;
    this._transport = new DailyRotateFile(this._props);
}

_createLoggerObj() {
    this._logger = winston.createLogger({
        transports: [this._transport],   
        exitOnError: false
    });
}

_log(type, error, description, stage, vars) {
    var logMsg = {};

    var msg = '';
    var fileIndex = 3;
    if(this._isError(error)) {
        var err = error;
        msg = error.message;
        fileIndex = 1;
    } else {
        var err = new Error();
        msg = error;
    }
    var caller_line = err.stack.split("at ")[fileIndex];

    var index = caller_line.indexOf("(");
    var lastIndex = caller_line.lastIndexOf(")");
    index = caller_line.slice(index + 1, lastIndex);

    var line = index.match(/:[0-9]+:/).toLocaleString();
    line = line.replace(/[^0-9]/g, '');

    var curTime = new FE.utils.date();
    var timestamp = curTime.format('YYYY-MM-DD HH:MM:SS');

    logMsg.level = type || 'info';
    logMsg.time = timestamp || '';
    logMsg.msg = msg || '';
    logMsg.desc = description || '';
    logMsg.stg = stage || '000';
    logMsg.file = index || 'Not Found';
    logMsg.stack = err.stack || 'Not Found';
    logMsg.line = line || 'Not Found';
    var logStr = JSON.stringify(logMsg);
    this._logger.log(type, logMsg);
}

info(error, description, stage, vars) {
    return this._log('info', error, description, stage, vars);
}

error(error, description, stage, vars) {
    return this._log('error', error, description, stage, vars);
}

warn(error, description, stage, vars) {
    return this._log('warn', error, description, stage, vars);
}

verbose(error, description, stage, vars) {
    return this._log('verbose', error, description, stage, vars);
}

debug(error, description, stage, vars) {
    return this._log('debug', error, description, stage, vars);
}

silly(error, description, stage, vars) {
    return this._log('silly', error, description, stage, vars);
}

/**
 * Checks if value is an Error or Error-like object
 * @static
 * @param  {Any}     val Value to test
 * @return {Boolean}     Whether the value is an Error or Error-like object
 */
_isError(val) {
    return !!val && typeof val === 'object' && (
        val instanceof Error || (
            val.hasOwnProperty('message') && val.hasOwnProperty('stack')
        )
    );
}
}

module.exports = LoggerHelper;

现在,我也想将日志存储到mysql db表中。我确实遇到了一个用于Mongo的Winston插件,但是我看不到将其存储到mysql数据库中的任何支持。有没有办法可以做到这一点?提前致谢。

singhkumarhemant

我最近面临着同样的问题。经过一番研究后,我发现一个软件包“ winston-sql-transport”将日志保存到mysql中。看到这个:

const { Logger } = require('winston');
const { SQLTransport } = require('./../lib/winston-sql-transport');

const logger = new Logger({
  transports: [
    new SQLTransport({
      tableName: 'winston_logs',
    })]
});

module.exports = logger;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Node.js 中使用 express-winston 将日志存储到 mysql db

如何使用 Winston 库在 Node.js 中每天将日志分离到单独的文件中

从Node.js将Json存储到MySQL数据库中

如何使用jdbc连接将数据从excel工作表存储到mysql数据库中

如何在python中使用PyMYSQL将数据存储到数据库

如何在Node.js中使用数据库?

使用 node.js 将 JSON 对象插入到 mySQL 数据库中

如何使用Node JS和Express在MySQL数据库中存储PDF

如何将 MySQL 数据库中的数据存储到由 id 索引的数组中?

IdentityServer4-如何使用mysql.data将刷新令牌存储到数据库中?

如何在Node.JS中使用Winston格式化错误日志?

如何使用Vanilla JavaScript将API调用中的数据存储到Firestore数据库中?

如何将表单中的值存储到mySQL数据库中?

如何将MySQL数据库中的值存储到变量中?

Node.js puppeteer mysql-使用mysql将获取的值插入到循环内的数据库中

如何在Express.js中使用mysql将n个输入存储到数组中

如何使用django将列表数据存储到数据库中?

如何使用php将API数据(数组)存储到数据库中

如何使用C#将日期以1和月份以1存储到mysql数据库

如何使用php将整数存储到MySQL数据库?

如何将Node.js的输入存储到数据库

如何使用实体框架将RichTextBox内容存储到WPF中的SQLServer数据库中

如何使用PDO Connection将乘法复选框存储到数据库中

如何使用变量将python中的数据插入到mysql数据库中?

如何将javascript的值传递到PHP变量中并存储到mysql数据库中?

如何在Node.js中的单个文件中提供mysql数据库连接

如何在node.js中隐藏mysql数据库的连接详细信息?

如何使用 Eclipse 将数据插入到 Google Cloud mysql 数据库中

如何在PHP中使用存储在数据库中的SQL查询中的变量