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 に答える