Winston: fungsi tulis typscript error logger.stream

Dibuat pada 30 Jun 2018  ·  4Komentar  ·  Sumber: winstonjs/winston

Beri tahu kami tentang lingkungan Anda:

  • _ winston versi? _

    • [] winston@2

    • [X] winston@3

  • _ node -v keluaran: _ v9.8.0
  • _Sistem Operasi? _ MacOS
  • _Language? _ Typescript: Versi 2.9.1

Apa masalahnya?

Saya mengalami kesalahan ketikan saat mencoba membuat fungsi tulis di objek logger.stream.

error TS2322: Type '{ write(message: any, encoding: any): void; }' is not assignable to type '(options?: any) => ReadableStream'.
  Object literal may only specify known properties, and 'write' does not exist in type '(options?: any) => ReadableStream'.

39             write(message: any, encoding: any) {
               ~~~~~

Apa yang Anda harapkan terjadi?

Tidak ada kesalahan

Lain

const options = {
            file: {
                level: "info",
                filename: `${appRoot}/logs/app.log`,
                handleExceptions: true,
                json: true,
                maxsize: 5242880, // 5MB
                maxFiles: 5,
                colorize: false,
            },
            console: {
                level: "debug",
                handleExceptions: true,
                json: false,
                colorize: true,
            },
        };

        this.logger = winston.createLogger({
            transports: [
                new winston.transports.File(options.file),
                new winston.transports.Console(options.console),
            ],
            exitOnError: false, // do not exit on handled exceptions
        });

        // create a stream object with a 'write' function that will be used by `morgan`
        this.logger.stream = {

            write(message: any, encoding: any) {
                // use the 'info' log level so the output will be picked up by both transports (file and console)
                this.logger.info(message);
            },
        };

Saya mengikuti tutorial ini:

https://www.digitalocean.com/community/tutorials/how-to-use-winston-to-log-node-js-applications

bug

Komentar yang paling membantu

Ini menjadi masalah karena Anda menambahkan stream langsung ke logger Anda, coba ini sebagai gantinya:

// At the bottom of your winston config add

export const stream = {
  write: (message) => {
    logger.info(message);
  },
};

Kemudian ubah login Anda dengan cepat seperti ini:

import { stream } from 'config/winston.ts';
import * as morgan from 'morgan';

app.use(morgan('combined', { stream }));

Karena kesalahan yang Anda posting, saya berasumsi bahwa Anda menggunakan skrip ketikan, maka contoh saya ditulis dalam skrip ketikan. Satu gotcha kecil, Anda mungkin tergoda untuk menulis aliran Anda seperti ini:

export const stream = {
  write: logger.info,
};

Namun ini akan memunculkan pengecualian karena argumen kedua dari fungsi stream bukanlah yang diharapkan oleh fungsi logger info . Beri tahu saya jika ini membantu.

Semua 4 komentar

memiliki kesalahan yang sama

Pada pandangan pertama sepertinya masalahnya ada pada definisi tipe: stream(options?: any): NodeJS.ReadableStream; Saya curiga harus dupleks.

Sunting: Sebenarnya yang dapat ditulisi juga dapat melakukannya. Saya akan melihat apakah saya bisa membuatnya bekerja.

@DABH bisakah Anda melihat ini?

Ini menjadi masalah karena Anda menambahkan stream langsung ke logger Anda, coba ini sebagai gantinya:

// At the bottom of your winston config add

export const stream = {
  write: (message) => {
    logger.info(message);
  },
};

Kemudian ubah login Anda dengan cepat seperti ini:

import { stream } from 'config/winston.ts';
import * as morgan from 'morgan';

app.use(morgan('combined', { stream }));

Karena kesalahan yang Anda posting, saya berasumsi bahwa Anda menggunakan skrip ketikan, maka contoh saya ditulis dalam skrip ketikan. Satu gotcha kecil, Anda mungkin tergoda untuk menulis aliran Anda seperti ini:

export const stream = {
  write: logger.info,
};

Namun ini akan memunculkan pengecualian karena argumen kedua dari fungsi stream bukanlah yang diharapkan oleh fungsi logger info . Beri tahu saya jika ini membantu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat