【问题标题】:winston logger file permission exceptionwinston logger 文件权限异常
【发布时间】:2015-02-06 22:29:00
【问题描述】:

我使用 node.js 编写了一个 API,其中使用了“Winston logger”。因为我提到的要写入所有日志的文件的所有者为“ROOT”,所以我的应用程序退出了。当我将文件所有者更改为“my user”时,我的应用程序可以工作。所以我的结论是文件权限是问题。

我的温斯顿密码:

new(winston.transports.File)({
        filename: config.path,-------------------->/home/username/logsdir/logfile
        //maxsize: 1024 * 1024 * 10, // 10MB
        exitOnError: false,
        maxsize: 1024 * 1024,
        level: 'info',
        handleExceptions: true,
        levels: customLevels.levels,
        rotationFormat: function() {
            return getFormattedDate();
            function getFormattedDate() {
                var temp = new Date();
                return dateStr = padStr(temp.getFullYear()) + padStr(1 + temp.getMonth()) + padStr(temp.getDate()) + padStr(temp.getHours()) + padStr(temp.getMinutes()) + padStr(temp.getSeconds());
            }
            function padStr(i) {
                return (i < 10) ? "0" + i : "" + i;
            }
        }
    })]

Winston 没有抛出任何异常,只是我的应用程序退出了。是否可以检查文件的所有者,或者温斯顿有任何选择来解决这个问题。我用谷歌搜索了很多,但我找不到解决方案。帮我解决这个问题。提前致谢。

【问题讨论】:

    标签: node.js logging winston


    【解决方案1】:

    Winston 似乎没有为此类案件提供任何帮助。解决方案是自己检查文件是否可写。这是一种方法:

    var logFile;
    [
        '/var/log/my-app.log',
        path.join(process.cwd(), 'my-app.log'),
        path.join('/tmp', 'my-app.log'),
    ]
    .forEach(function (path) {
        if (logFile) { return; }
        if (fs.accessSync && fs.accessSync(path, fs.W_OK)) {
            console.log('logging to ' + path);
            logFile = path;
            return;
        }
    
        var fh;
        try { fh = fs.openSync(path, 'a'); }
        catch (e) {
            console.error(e.message);
            return;
        }
        console.log('logging to ' + path);
        logFile = path;
        fs.closeSync(fh);
    });
    

    现在变量 logFile 将具有可写文件的名称,如果一个是可写的。

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 2019-07-04
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多