节点:登录文件而不是控制台

node.js Node.js

泡芙逆天

2020-03-24

我可以配置console.log为将日志写在文件上而不是在控制台上打印吗?

第3437篇《节点:登录文件而不是控制台》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

5个回答
乐米亚 2020.03.24

我只是构建了一个包来执行此操作,希望您喜欢它;) https://www.npmjs.com/package/writelog

LEva卡卡西 2020.03.24

您还可以查看以下npm模块:https ://www.npmjs.com/package/noogger

新手

简单直接...

西门 2020.03.24

如果这是针对应用程序的,那么最好使用日志记录模块。它会为您提供更大的灵活性。一些建议。

米亚 2020.03.24
const fs = require("fs");
const {keys} = Object;
const {Console} = console;

/**
 * Redirect console to a file.  Call without path or with false-y
 * value to restore original behavior.
 * @param {string} [path]
 */
function file(path) {
    const con = path ? new Console(fs.createWriteStream(path)) : null;

    keys(Console.prototype).forEach(key => {
        if (path) {
            this[key] = (...args) => con[key](...args);
        } else {
            delete this[key];
        }
    });
};

// patch global console object and export
module.exports = console.file = file;

要使用它,请执行以下操作:

require("./console-file");
console.file("/path/to.log");
console.log("write to file!");
console.error("also write to file!");
console.file();    // go back to writing to stdout
Tony凯 2020.03.24

如果您正在生产中寻找某些东西,温斯顿可能是最佳选择。

如果您只是想快速完成开发工作,请直接输出到文件中(我认为这仅适用于* nix系统):

nohup node simple-server.js > output.log &

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android