@@ -11,8 +11,9 @@ const message = "Something to do with something";
1111 * Test a Winston level vs. Logtail level
1212 * @param level - Winston log level
1313 * @param logLevel LogLevel - Logtail log level
14+ * @param levels Use custom log levels
1415 */
15- async function testLevel ( level : string , logLevel : LogLevel ) {
16+ async function testLevel ( level : string , logLevel : LogLevel , levels ?: { [ key : string ] : number } ) {
1617 // Sample log
1718 const log : LogEntry = {
1819 level,
@@ -31,7 +32,9 @@ async function testLevel(level: string, logLevel: LogLevel) {
3132 // Create a Winston logger
3233 const logger = winston . createLogger ( {
3334 level,
34- transports : [ new LogtailTransport ( logtail ) ]
35+ transports : [ new LogtailTransport ( logtail ) ] ,
36+ // use custom levels if passed
37+ levels : levels || winston . config . npm . levels ,
3538 } ) ;
3639
3740 // Log it!
@@ -45,29 +48,27 @@ async function testLevel(level: string, logLevel: LogLevel) {
4548 // Message should match
4649 expect ( logs [ 0 ] . message ) . toBe ( log . message ) ;
4750
48- // Log level should be 'info '
51+ // Log level should be 'logLevel '
4952 expect ( logs [ 0 ] . level ) . toBe ( logLevel ) ;
5053}
5154
5255describe ( "Winston logging tests" , ( ) => {
53- it ( "should log at the 'debug' level" , async ( ) => {
54- return testLevel ( "debug" , LogLevel . Debug ) ;
55- } ) ;
56-
57- it ( "should log at the 'info' level" , async ( ) => {
58- return testLevel ( "info" , LogLevel . Info ) ;
59- } ) ;
60-
61- it ( "should log at the 'warn' level" , async ( ) => {
62- return testLevel ( "warn" , LogLevel . Warn ) ;
63- } ) ;
64-
65- it ( "should log at the 'error' level" , async ( ) => {
66- return testLevel ( "error" , LogLevel . Error ) ;
67- } ) ;
56+ const levels : { [ key :string ] : LogLevel } = {
57+ "silly" : LogLevel . Silly ,
58+ "debug" : LogLevel . Debug ,
59+ "http" : LogLevel . Http ,
60+ "verbose" : LogLevel . Verbose ,
61+ "warn" : LogLevel . Warn ,
62+ "error" : LogLevel . Error ,
63+ } ;
64+ for ( const key in levels ) {
65+ it ( `should log at the '${ key } ' level` , async ( ) => {
66+ return testLevel ( key , levels [ key ] ) ;
67+ } ) ;
68+ }
6869
6970 it ( "should default to 'info' level when using custom logging" , async ( ) => {
70- return testLevel ( "silly " , LogLevel . Info ) ;
71+ return testLevel ( "xyz " , LogLevel . Info , { xyz : 42 } ) ;
7172 } ) ;
7273
7374 it ( "should sync multiple logs" , async done => {
0 commit comments