1
var date = new Date();
var logPath = __dirname + '/log/transcript.' + date.getUTCHours() + ':' + date.getUTCMinutes() + ':' + date.getUTCSeconds() + '.' + date.getUTCDate() + '-' + date.getUTCMonth() + '-' + date.getUTCFullYear() + '.log';

var logger = {
    deglog: function (degree, value) {
        var now = new Date().toUTCString();

        stream = fs.createWriteStream(logPath, {
            'flags': 'a+',
            'encoding': 'utf8'
        });

        stream.write(now + ' ');
        stream.write(degree + ': ');
        stream.write(value + '\n');

        stream.end();
    },
    log: function (value) {
        this.deglog('INFO', value);
    },
    warning: function (value) {
        this.deglog('WARN', value);
    },
    error: function (value) {
        this.deglog('ERROR', value);
    }
}

上面的代码片段应该是创建一个文件,如果它不存在,但我得到一个 ENOENT 错误。谁能向我解释这个问题?

4

2 回答 2

2

该错误与使用标志无关,只是您的文件名中有非法字符。摆脱它们,它将正常工作。

transcript.6:25:16.13-9-2013.log
            │  │
            └──└── illegal characters
于 2013-10-13T16:15:49.687 回答
0

@hexacyanide 是正确的,您的文件名中有一个非法字符。但是,您也可以捕获未捕获的异常并将它们记录下来以便更好地调试。

process.on('uncaughtException',function(err) { console.log(err.stack); ... });
于 2013-10-13T16:23:23.300 回答