Winston: Tidak ada file log yang dibuat

Dibuat pada 26 Mei 2016  ·  27Komentar  ·  Sumber: winstonjs/winston

OS: Ubuntu 14.04
NodeJS: 6.2.0
Winston: 2.2.0

Kode berikut tidak membuat file log:

const logger = new Winston.Logger({
    level: 'verbose',
    transports: [
      new Winston.transports.Console({
        timestamp: true
      }),
      new Winston.transports.File({
        filename: 'app.log',
        timestamp: true
      })
    ]
  });

logger.info('Holla');

Itu masuk ke terminal dengan baik:

2016-05-26T13:11:49.927Z - info: Holla

Tetapi tidak ada file log yang dibuat.

Komentar yang paling membantu

Saya baru saja mengalami masalah ini. Direktori harus ada terlebih dahulu. winston akan membuat file baru untuk Anda, tetapi tampaknya tidak membuat direktori baru untuk Anda (misalnya, Anda perlu membuat direktori "logs" jika Anda mencoba masuk ke file yang terletak di logs/app.js)

Semua 27 komentar

+1

+1

+1

+1

Tampaknya ada masalah di simpul 6 di fs.stat()
Pada beberapa alasan tidak pernah mengeksekusi panggilan balik fs.stat()

    fs.stat(fullname, function (err, stats) {
      if (err) {
        if (err.code !== 'ENOENT') {
          return self.emit('error', err);
        }
        return createAndFlush(0);
      }

      if (!stats || (self.maxsize && stats.size >= self.maxsize)) {
        //
        // If `stats.size` is greater than the `maxsize` for
        // this instance then try again
        //
        return self._incFile(function() {
          checkFile(self._getFile());
        });
      }

      createAndFlush(stats.size);
    });
  })(this._getFile()); 

Apakah sudah diperbaiki?

Saya memperbaiki masalah ini dengan memberikan jalur absolut seperti itu:
winston.add(winston.transports.File, { filename: ${__dirname}/logs/appError.log })

Ini bekerja untuk saya. Saya punya masalah baru-baru ini pada sebuah proyek dengan Winston menggunakan Atom dimana file Gitignore tidak menunjukkan di direktori file proyek di Atom karena pengaturan diperbarui dalam paket pohon-view ... (Option: Sembunyikan VCS Diabaikan File)

_Menggunakan Node 6.2.2 dan Winston 2.2.0._

Kode:

'use strict';

let Winston = require('winston');


const logger = new Winston.Logger({
    level: 'verbose',
    transports: [
      new Winston.transports.Console({
        timestamp: true
      }),
      new Winston.transports.File({
        filename: 'app.log',
        timestamp: true
      })
    ]
  });

logger.info('Holla');

Membuat file app.log dengan output: {"level":"info","message":"Holla","timestamp":"2016-07-01T19:29:14.035Z"} dan log ke konsol dengan 2016-07-01T19:29:14.034Z - info: Holla

Saya baru saja mengalami masalah ini. Direktori harus ada terlebih dahulu. winston akan membuat file baru untuk Anda, tetapi tampaknya tidak membuat direktori baru untuk Anda (misalnya, Anda perlu membuat direktori "logs" jika Anda mencoba masuk ke file yang terletak di logs/app.js)

Wish winston memeriksa apakah folder/direktori log ada, lalu buat folder/direktori log jika tidak ada saat startup. Saya pikir fs dapat melakukan ini dengan benar?

+1

+1

+1

if (!fs.existsSync('path') {
    fs.mkdirSync('path');
}

http://thisdavej.com/using-winston-a-versatile-logging-library-for-node-js/

Saya mengalami masalah ini dan menyelesaikannya menggunakan garis miring ganda:

        Logger.loggerInfo = new Winston.Logger({
            level: 'info',
            transports: [
                new Winston.transports.File({
                    filename: process.cwd() + '\\logs\\info.log',
                    timestamp: true
                })
            ]
        });

Saya melakukan beberapa tes dengan beberapa mekanisme logging lanjutan (termasuk winston) dan tampaknya logger tidak dapat menulis ke dalam file jika Anda melakukan exit bersih (process.exit(0)).
Menghapus keluar bersih memecahkan masalah.

@fvuilleumier Anda benar, terima kasih, namun menghapus tidak nyaman untuk alat CLI misalnya. Tetapi menggunakan process.exitCode = 0 (atau kode apa pun) berfungsi dengan baik karena memungkinkan loop selesai dengan anggun.

Ada contoh untuk membuat file

const filename = path.join(__dirname, 'created-logfile.log');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename })
  ]
});

membuat file contoh

@fvuilleumier @nicosommi tetapi bagaimana jika saya ingin keluar dari aplikasi setelah mencatat kesalahan? Apakah Anda berhasil menemukan jalan-jalan?

@danbrownbox pada akhirnya skrip js hanyalah file yang dieksekusi hingga akhir, jadi jika Anda ingin keluar dari aplikasi setelah beberapa baris tertentu, Anda hanya perlu membangun aliran eksekusi yang tepat pada fungsi Anda

Tidak berfungsi dengan jalur relatif di mac saya, tetapi membuat file jika jalur absolut disediakan.

Apakah saya menggunakan absolut atau relatif tidak masalah. Ini tidak berfungsi untuk saya saat menambahkan transportasi secara dinamis.

function createLogFile(appName) {
  pathUtils.ensureDirectoryExists('logs');
  pathUtils.ensureDirectoryExists(`logs/${appName}`);
  winston.add(winston.transports.File, {
    level: 'debug',
    //filename: `logs/${appName}/export-${Date.now()}.log`,
    //filename: `${__dirname}/logs/${appName}/export-${Date.now()}.log`,
    filename: `${process.cwd()}/logs/${appName}/export-${Date.now()}.log`,
    json: false,
    formatter: _formatLog()
  });
}

Namun, jika saya menambahkan transportasi ini di createLogger() ia bekerja dengan mutlak.

Jawaban ini bekerja untuk saya.
Ini kode saya:
````
const winston = membutuhkan('winston');
const logDir = 'log';
const fs = membutuhkan('fs');

if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}

const logger = winston.createLogger({
tingkat: 'info',
format: winston.format.json(),
exitOnError: salah,
transportasi: [
baru (memerlukan('winston-daily-rotate-file'))({
nama file: ${logDir}/logs.log ,
datePattern: 'YYYY-MM-DD-HH',
zipArchive: benar,
tingkat: 'konyol'
}),
baru (memerlukan('winston-daily-rotate-file'))({
nama file: ${logDir}/errors.log ,
datePattern: 'YYYY-MM-DD-HH',
zipArchive: benar,
tingkat: 'kesalahan'
})
],
});

ekspor {logger};

logger.silly('tes konyol');
logger.info('pengujian info');
logger.warn('peringatan tes');
logger.error('pengujian kesalahan');
````

Saya penulis asli masalah ini (akun berbeda). Saya kembali ... karena saya memiliki masalah yang sama dan saya lupa bagaimana saya menyelesaikannya

Apakah Anda menggunakan [email protected] ? Apakah Anda memastikan direktori ada di mana Anda ingin file log berada ( winston tidak akan membuat direktori untuk Anda, meskipun kami akan menerima PR yang menjadikannya opsi atau bahkan perilaku default). Kami mungkin harus menutup masalah lama ini setelah kami dapat membuat Anda aktif dan berjalan lagi :)

Saya bersedia mengerjakan PR untuk ini di waktu luang saya, jadi serahkan pada saya 👍

Dingin! 👍 Untuk menutup ini, kita dapat melacak hal-hal direktori di #1465 . Masalah terpisah harus diuji terhadap master dan dibuka sebagai masalah baru jika masalah tetap ada. Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat