From 1e6c77315cb0b513971cb8b802e83bb2e5d93587 Mon Sep 17 00:00:00 2001 From: TANAKA Koichi Date: Thu, 10 Mar 2016 18:09:00 +0900 Subject: [PATCH 1/2] winston: allow interpolation arguments in log methods --- winston/winston-tests.ts | 10 ++++++++ winston/winston.d.ts | 52 ++++++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/winston/winston-tests.ts b/winston/winston-tests.ts index 0147af581..5251811d0 100644 --- a/winston/winston-tests.ts +++ b/winston/winston-tests.ts @@ -76,14 +76,19 @@ winston.exitOnError = bool; winston.log(str, str); winston.log(str, str, metadata); +winston.log(str, str, metadata, metadata, metadata); winston.debug(str); winston.debug(str, metadata); +winston.debug(str, metadata, metadata, metadata); winston.info(str); winston.info(str, metadata); +winston.info(str, metadata, metadata, metadata); winston.warn(str); winston.warn(str, metadata); +winston.warn(str, metadata, metadata, metadata); winston.error(str); winston.error(str, metadata); +winston.error(str, metadata, metadata, metadata); winston.query(queryOptions, (err: Error, results: any): void => { @@ -118,14 +123,19 @@ readableStream.on('log', function (log:any):void { logger = logger.extend(obj); logger.log(str, str); logger.log(str, str, metadata); +logger.log(str, str, metadata, metadata, metadata); logger.debug(str); logger.debug(str, metadata); +logger.debug(str, metadata, metadata, metadata); logger.info(str); logger.info(str, metadata); +logger.info(str, metadata, metadata, metadata); logger.warn(str); logger.warn(str, metadata); +logger.warn(str, metadata, metadata, metadata); logger.error(str); logger.error(str, metadata); +logger.error(str, metadata, metadata, metadata); logger.query(queryOptions, (err: Error, results: any): void => { diff --git a/winston/winston.d.ts b/winston/winston.d.ts index 0dc80a57c..a4fc77bb7 100644 --- a/winston/winston.d.ts +++ b/winston/winston.d.ts @@ -18,20 +18,12 @@ declare module "winston" { export var exitOnError: boolean; export var level: string; - export function log(level: string, msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - export function log(level: string, msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; + export var log: LogMethod; - export function debug(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - export function debug(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - - export function info(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - export function info(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - - export function warn(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - export function warn(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - - export function error(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - export function error(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; + export var debug: LeveledLogMethod; + export var info: LeveledLogMethod; + export var warn: LeveledLogMethod; + export var error: LeveledLogMethod; export function query(options: QueryOptions, callback?: (err: Error, results: any) => void): any; export function query(callback: (err: Error, results: any) => void): any; @@ -59,20 +51,12 @@ declare module "winston" { export interface LoggerInstance extends NodeJS.EventEmitter { extend(target: any): LoggerInstance; - log(level: string, msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - log(level: string, msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; + log: LogMethod; - debug(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - debug(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - - info(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - info(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - - warn(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - warn(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - - error(msg: string, meta: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; - error(msg: string, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; + debug: LeveledLogMethod; + info: LeveledLogMethod; + warn: LeveledLogMethod; + error: LeveledLogMethod; query(options: QueryOptions, callback?: (err: Error, results: any) => void): any; query(callback: (err: Error, results: any) => void): any; @@ -281,4 +265,20 @@ declare module "winston" { start: Date; done: (msg: string) => LoggerInstance; } + + interface LogMethod { + (level: string, msg: string, callback: LogCallback): LoggerInstance; + (level: string, msg: string, meta: any, callback: LogCallback): LoggerInstance; + (level: string, msg: string, ... meta: any[]): LoggerInstance; + } + + interface LeveledLogMethod { + (msg: string, callback: LogCallback): LoggerInstance; + (msg: string, meta: any, callback: LogCallback): LoggerInstance; + (msg: string, ... meta: any[]): LoggerInstance; + } + + interface LogCallback { + (error?: any, level?: string, msg?: string, meta?:any): void; + } } From e1bc35c34ebe0d19a040bcdd1d65ba6baaead4e2 Mon Sep 17 00:00:00 2001 From: TANAKA Koichi Date: Thu, 10 Mar 2016 18:27:34 +0900 Subject: [PATCH 2/2] winston: allow a specific TransportOptions as 2nd arg of logger.add and winston.add --- winston/winston-tests.ts | 2 ++ winston/winston.d.ts | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/winston/winston-tests.ts b/winston/winston-tests.ts index 5251811d0..34fc19875 100644 --- a/winston/winston-tests.ts +++ b/winston/winston-tests.ts @@ -99,6 +99,7 @@ winston.query((err: Error, results: any): void => { logger = winston.add(transport, transportOptions); logger = winston.remove(transport); +logger = winston.add(transport, {filename: 'path/to/file.log'}); winston.clear(); logger = winston.profile(str, str, metadata, (err: Error, level: string, msg: string, meta: any):void => { @@ -150,6 +151,7 @@ logger.handleExceptions(transport); logger.unhandleExceptions(transport); logger = logger.add(transport, transportOptions, bool); logger = logger.add(transport); +logger = logger.add(transport, {filename: 'path/to/file.log'}); logger.clear(); logger = logger.remove(transport); diff --git a/winston/winston.d.ts b/winston/winston.d.ts index a4fc77bb7..df0288d09 100644 --- a/winston/winston.d.ts +++ b/winston/winston.d.ts @@ -155,7 +155,9 @@ declare module "winston" { Webhook: WebhookTransportInstance; } - export interface TransportOptions { + export type TransportOptions = ConsoleTransportOptions|DailyRotateFileTransportOptions|FileTransportOptions|HttpTransportOptions|MemoryTransportOptions|WebhookTransportOptions|WinstonModuleTransportOptions; + + export interface GenericTransportOptions { level?: string; silent?: boolean; raw?: boolean; @@ -188,12 +190,12 @@ declare module "winston" { path?: string; } - export interface ConsoleTransportOptions extends TransportOptions, GenericTextTransportOptions { + export interface ConsoleTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { logstash?: boolean; debugStdout?: boolean; } - export interface DailyRotateFileTransportOptions extends TransportOptions, GenericTextTransportOptions { + export interface DailyRotateFileTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { logstash?: boolean; maxsize?: number; maxFiles?: number; @@ -209,7 +211,7 @@ declare module "winston" { stream?: NodeJS.WritableStream; } - export interface FileTransportOptions extends TransportOptions, GenericTextTransportOptions { + export interface FileTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { logstash?: boolean; maxsize?: number; rotationFormat?: boolean; @@ -227,14 +229,14 @@ declare module "winston" { stream?: NodeJS.WritableStream; } - export interface HttpTransportOptions extends TransportOptions, GenericNetworkTransportOptions { + export interface HttpTransportOptions extends GenericTransportOptions, GenericNetworkTransportOptions { ssl?: boolean; } - export interface MemoryTransportOptions extends TransportOptions, GenericTextTransportOptions { + export interface MemoryTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { } - export interface WebhookTransportOptions extends TransportOptions, GenericNetworkTransportOptions { + export interface WebhookTransportOptions extends GenericTransportOptions, GenericNetworkTransportOptions { method?: string; ssl?: { key?: any; @@ -243,7 +245,7 @@ declare module "winston" { }; } - export interface WinstonModuleTransportOptions extends TransportOptions { + export interface WinstonModuleTransportOptions extends GenericTransportOptions { [optionName: string]: any; }