1
1
// eslint-disable-next-line import/no-extraneous-dependencies
2
2
import { IYabFetchContext , YabFetchMiddleware } from 'yab-fetch' ;
3
3
import { Options , Logger } from './type' ;
4
- import { logBeforeFetch , logAfterFetch , logError } from './logHelper ' ;
4
+ import { parseUrl } from './utils ' ;
5
5
6
6
export const createLogger = ( options ?: Options ) : YabFetchMiddleware => {
7
7
const { collapsed = true } = options || { } ;
@@ -17,25 +17,45 @@ export const createLogger = (options?: Options): YabFetchMiddleware => {
17
17
18
18
return async ( ctx : IYabFetchContext , next : ( ) => Promise < unknown > ) => {
19
19
const {
20
- yabRequestInit : { url, method }
20
+ yabRequestInit,
21
+ yabRequestInit : { url, method, data }
21
22
} = ctx ;
22
23
23
- logger . group (
24
- `📖 yab: %c${ method } %c${ url } %c@ ${ new Date ( ) } ` ,
25
- 'color: #6f42c1;font-size: 14px;' ,
26
- 'color: #005cc5;font-size: 14px;' ,
27
- 'color: #666'
28
- ) ;
29
-
30
- logBeforeFetch ( logger , ctx ) ;
31
-
24
+ const startTime = new Date ( ) ;
32
25
try {
33
26
await next ( ) ;
34
- logAfterFetch ( logger , ctx ) ;
35
- } catch ( e ) {
36
- logError ( logger , e ) ;
37
- } finally {
27
+ const endTime = new Date ( ) ;
28
+ const costTime = endTime . getTime ( ) - startTime . getTime ( ) ;
29
+
30
+ const { origin, pathname, search } = parseUrl ( url ) ;
31
+
32
+ logger . group (
33
+ `%c${ method . toUpperCase ( ) } %c${ origin } ${ pathname } %c@ ${ startTime . toLocaleTimeString ( ) } , cost: ${ costTime } ms` ,
34
+ 'color: #61bd4f' ,
35
+ 'color: #324856' ,
36
+ 'color: #50697d'
37
+ ) ;
38
+
39
+ // ------before fetch --------
40
+ logger . group ( '%cbefore fetch' , 'color: #416eb6' ) ;
41
+ logger . log ( 'method:' , method ) ;
42
+ logger . log ( 'url:' , url ) ;
43
+ if ( method === 'post' ) logger . log ( 'data:' , data ) ;
44
+ if ( method === 'get' ) logger . log ( 'data:' , search ) ;
45
+ logger . log ( 'yabRequestInit:' , yabRequestInit ) ;
46
+ logger . groupEnd ( ) ;
47
+
48
+ // ----- after fetch --------
49
+ const { response } = ctx ;
50
+ logger . group ( '%cafter fetch' , 'color:#715ca8' ) ;
51
+ logger . log ( 'response:' , response ) ;
52
+ logger . log ( 'ctx:' , ctx ) ;
38
53
logger . groupEnd ( ) ;
54
+ } catch ( e ) {
55
+ // logError(logger, e);
56
+ throw e ;
39
57
}
58
+
59
+ logger . groupEnd ( ) ;
40
60
} ;
41
61
} ;
0 commit comments