Winston: "prettyPrint" рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╕рдордп рдЙрдЪреНрдЪ CPU рдЙрдкрдпреЛрдЧ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рд╕рд┐рддре░ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: winstonjs/winston

рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ:

рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?

рдЬрдм рдХрдИ JSON рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрд╣рди рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд╕реБрдВрджрд░рдкреНрд░рд┐рдВрдЯ рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдВрд╕реНрдЯрди рд╕реАрдкреАрдпреВ рдХреЛ 90%+ . рддрдХ рдмрдврд╝рд╛ рджреЗрдЧрд╛

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд╣рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

new (winston.transports.Console)({
          level: 'silly',
          silent: false,
          colorize: true,
          prettyPrint: true,
          timestamp: true,
          humanReadableUnhandledException: true,
          format: format.combine(
            format.splat(),
            format.colorize(),
            format.label({ label: 'Foo' }),
            format.timestamp(),
            format.prettyPrint(),
            format.printf( log => {
              return '[ ' + log.timestamp + ' ][ ' + log.level + ' ][ ' + log.label + ' ] ' + log.message;
            })
          )
        })

https://github.com/winstonjs/winston/issues/613 . рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ?

рд╡рд┐рдВрд╕реНрдЯрди рдФрд░ рдкреНрд░реАрдЯреАрдкреНрд░рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рд╕реАрдкреАрдпреВ рд╕реНрдкрд╛рдЗрдХ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ

рдЕрдиреНрдп рд╕реВрдЪрдирд╛

рд╕реБрдВрджрд░рдкреНрд░рд┐рдВрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдпрд╛ рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ JSON рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, CPU рд╕реНрдкрд╛рдЗрдХреНрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд╕реАрдкреАрдпреВ рд╕реНрдкрд╛рдЗрдХреНрд╕ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдкрд░рд┐рд╡рд╣рди рд╡рд┐рдиреНрдпрд╛рд╕:

new (winston.transports.Console)({
          level: 'silly',
          silent: false,
          colorize: true,
          prettyPrint: false, // Forced disabled pretty print
          timestamp: true,
          humanReadableUnhandledException: true,
          format: format.combine(
            format.splat(),
            format.colorize(),
            format.label({ label: 'Foo' }),
            format.timestamp(),
            //format.prettyPrint(), // Removed prettyPrint from format
            format.printf( log => {
              return '[ ' + log.timestamp + ' ][ ' + log.level + ' ][ ' + log.label + ' ] ' + log.message;
            })
          )
        })

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдпрд╛ рд▓реЙрдЧрдлреЙрд░реНрдо рдореЗрдВ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

util.inspect рдкрд░ Node.js рдбреЙрдХреНрд╕ рд╕реЗ (https://nodejs.org/api/util.html#util_util_inspect_object_options):

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ util.inspect() рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдХреБрдЫ рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░реЗрдВ рдФрд░ рдХрднреА рднреА рд╣реЙрдЯ рдХреЛрдб рдкрде рдореЗрдВ рди рдХрд░реЗрдВред

рддреЛ рдиреЛрдб рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╢рд╛рдпрдж рдХрд╣реАрдВ рдХрд╣реАрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рд╕реБрдВрджрд░ рдкреНрд░рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕реБрдВрджрд░рдкреНрд░рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ рд╣реИ!

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЗ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рддрдиреЗ рдЧрд╣рд░реЗ/рдЬрдЯрд┐рд▓ рд╣реИрдВ? util.inspect, рдЬрд┐рд╕реЗ рд╣рдо рд╕реБрдВрджрд░ рдкреНрд░рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдЪрдХреНрд░реАрдп рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдирдВрдд рд▓реВрдк рднреА)ред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕рдВрдкреВрд░реНрдг рд╡рд╕реНрддреБ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдк рдЗрд╕рдХреА рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдХреБрдЫ рдкрд░рддреЛрдВ (рдЧрд╣рд░рд╛рдИ рдкреИрд░рд╛рдореАрдЯрд░) рд╕реЗ рдЦреБрд╢ рд╣реЛрдВрдЧреЗ?

рдЕрднреА рдореИрдВ рдЬрд┐рд╕ JSON рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓реЙрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ; рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреНрд▓рд╛рд╕ рд╣реИрдВ, рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ 10 рд╕реЗ 100 рдЖрдЗрдЯрдо рддрдХ рд╣реИ рдФрд░ рдЙрдирдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрднреА рднреА 3 (рдХреЛрдИ рдЪрдХреНрд░реАрдп рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ) рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕реНрддрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреА рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдкреНрд░рддреНрдпреЗрдХ 200/500 рдПрдордПрд╕ рдореЗрдВ рдПрдХ рд▓реЙрдЧ рдХреА рдЕрдзрд┐рдХрддрдо рдЖрд╡реГрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ред

"рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг" рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ "рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг" рд╡рд░реНрдмреЛрд╕рд┐рдЯреА "рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг" рдкрд░реНрдпрд╛рдкреНрдд (^^) рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реБрдВрджрд░ рдкреНрд░рд┐рдВрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЧрд╣рд░рд╛рдИ рд╕реАрдорд╛, рджреЗрд░реА рдпрд╛ рднрд╛рд░реА CPU рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рднреА рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ "util.inspect" JSON.stringify рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрддрдирд╛ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рд╕рдВрднрд╡рддрдГ рд╕реНрдкрд╛рдЗрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╣рд░рд╛рдИ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)

рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдпрд╛ рд▓реЙрдЧрдлреЙрд░реНрдо рдореЗрдВ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

util.inspect рдкрд░ Node.js рдбреЙрдХреНрд╕ рд╕реЗ (https://nodejs.org/api/util.html#util_util_inspect_object_options):

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ util.inspect() рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдХреБрдЫ рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░реЗрдВ рдФрд░ рдХрднреА рднреА рд╣реЙрдЯ рдХреЛрдб рдкрде рдореЗрдВ рди рдХрд░реЗрдВред

рддреЛ рдиреЛрдб рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╢рд╛рдпрдж рдХрд╣реАрдВ рдХрд╣реАрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рд╕реБрдВрджрд░ рдкреНрд░рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕реБрдВрджрд░рдкреНрд░рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

xungwoo picture xungwoo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mrgoos picture mrgoos  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Infinitay picture Infinitay  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tagyoureit picture tagyoureit  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JaehyunLee-B2LiNK picture JaehyunLee-B2LiNK  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ