11// Copyright 2020 Yamboy1. All rights reserved. MIT license.
22
3+ import { parseFormat } from "./format.ts" ;
34import { LogLevel } from "./levels.ts" ;
45import { Sink , consoleSink } from "./sinks.ts" ;
56
@@ -13,6 +14,8 @@ export function createLogger(
1314 } ) ;
1415}
1516
17+ type LogFunction = ( format : string , ...args : unknown [ ] ) => void ;
18+
1619export interface LoggerOptions {
1720 minimumLevel : LogLevel ;
1821 sinks : Sink [ ] ;
@@ -22,11 +25,11 @@ export interface Logger {
2225 /** Add a sink at runtime, in most cases, the sinks parameter from createLogger should be used instead. */
2326 addSink ( sink : Sink ) : this;
2427
25- debug ( format : string , ... args : unknown [ ] ) : void ;
26- info ( format : string , ... args : unknown [ ] ) : void ;
27- warning ( format : string , ... args : unknown [ ] ) : void ;
28- error ( format : string , ... args : unknown [ ] ) : void ;
29- critical ( format : string , ... args : unknown [ ] ) : void ;
28+ debug : LogFunction ;
29+ info : LogFunction ;
30+ warning : LogFunction ;
31+ error : LogFunction ;
32+ critical : LogFunction ;
3033}
3134
3235class LoggerImpl {
@@ -43,17 +46,19 @@ class LoggerImpl {
4346 return this ;
4447 }
4548
46- private log ( level : LogLevel , format : string , ...args : unknown [ ] ) : void {
49+ private log ( level : LogLevel , formatString : string , ...args : unknown [ ] ) : void {
4750 if ( level < this . minimumLevel ) return ;
4851
52+ const format = parseFormat ( formatString , ...args ) ;
53+
4954 if ( this . sinks . length === 0 ) {
5055 console . error (
5156 "[Deno Structured Logging] Warning: No sinks are provided." ,
5257 ) ;
5358 }
5459
5560 for ( let sink of this . sinks ) {
56- sink ( level , format , ... args ) ;
61+ sink ( level , format ) ;
5762 }
5863 }
5964
0 commit comments