3
3
var fs = require ( 'fs' ) ;
4
4
var helper = require ( '../utils' ) ;
5
5
var Parser = require ( '../error_parser' ) ;
6
+ const { promisify } = require ( 'util' ) ;
7
+ var glob = promisify ( require ( 'glob' ) ) ;
6
8
7
9
var MAX_ERROR_COUNT = 20 ; // 一次最多抓获20个Error
8
10
exports . logs = [ ] ; // 日志路径
@@ -11,8 +13,10 @@ var keyMap = new Map(); // 记录每个key实际对应的路径值
11
13
var map = new Map ( ) ; // 记录每个文件访问的位置
12
14
var parsers = new Map ( ) ; // 每个key都有一个parser
13
15
14
- var getRealPath = function ( filepath ) {
15
- return helper . resolveYYYYMMDDHH ( filepath ) ;
16
+ var getRealPath = async function ( filepath ) {
17
+ var files = await glob ( filepath )
18
+ return files . map ( path => helper . resolveYYYYMMDDHH ( path ) )
19
+
16
20
} ;
17
21
18
22
var readFile = function ( key , filepath , callback ) {
@@ -62,20 +66,26 @@ var readFile = function (key, filepath, callback) {
62
66
} ) ;
63
67
} ;
64
68
65
- var readLog = function ( key , callback ) {
66
- var currentPath = getRealPath ( key ) ;
67
- var current = keyMap . get ( key ) ;
69
+ var readLog = async function ( key , callback ) {
70
+ var currentPaths = await getRealPath ( key ) ;
71
+ var currents = keyMap . get ( key ) ;
68
72
69
- if ( currentPath !== current ) {
73
+ if ( currentPaths . toString ( ) !== currents . toString ( ) ) {
70
74
keyMap . set ( key , currentPath ) ; // replace real path
71
- readFile ( key , current , function ( err ) {
72
- if ( err ) {
73
- return callback ( err ) ;
74
- }
75
- readFile ( key , currentPath , callback ) ;
76
- } ) ;
75
+ currents . forEach ( current => {
76
+ readFile ( key , current , function ( err ) {
77
+ if ( err ) {
78
+ return callback ( err ) ;
79
+ }
80
+ currentPaths . forEach ( path => {
81
+ readFile ( key , path , callback ) ;
82
+ } )
83
+ } ) ;
84
+ } )
77
85
} else {
78
- readFile ( key , currentPath , callback ) ;
86
+ currentPaths . forEach ( path => {
87
+ readFile ( key , path , callback ) ;
88
+ } )
79
89
}
80
90
} ;
81
91
@@ -94,18 +104,20 @@ var readLogs = function (callback) {
94
104
}
95
105
} ;
96
106
97
- exports . init = function ( config ) {
107
+ exports . init = async function ( config ) {
98
108
if ( config . error_log ) {
99
109
exports . logs = config . error_log ;
100
110
var logs = config . error_log ;
101
111
102
112
for ( var i = 0 ; i < logs . length ; i ++ ) {
103
113
var key = logs [ i ] ;
104
114
parsers . set ( key , new Parser ( MAX_ERROR_COUNT ) ) ;
105
- var realPath = getRealPath ( key ) ;
106
- if ( fs . existsSync ( realPath ) ) {
107
- map . set ( realPath , fs . statSync ( realPath ) . size ) ;
108
- }
115
+ var realPath = await getRealPath ( key ) ;
116
+ realPath . forEach ( path => {
117
+ if ( fs . existsSync ( path ) ) {
118
+ map . set ( path , fs . statSync ( path ) . size ) ;
119
+ }
120
+ } )
109
121
keyMap . set ( key , realPath ) ;
110
122
}
111
123
}
0 commit comments