@@ -8,6 +8,8 @@ import FileIndex from "../file";
88
99let fileName = null ;
1010let fileStream = null ;
11+ let appFileNames = { } ;
12+ let appFileStreams = { } ;
1113
1214const stringDatetime = ( ) => {
1315 return date . format ( new Date ( ) , "YYYYMMDD" ) ;
@@ -17,7 +19,7 @@ const logsDir = () => {
1719} ;
1820
1921const appLogsDir = ( ) => {
20- return path . join ( AppEnv . userData , "data/ logs" ) ;
22+ return path . join ( AppEnv . dataRoot , "logs" ) ;
2123} ;
2224
2325const root = ( ) => {
@@ -28,6 +30,10 @@ const file = () => {
2830 return path . join ( logsDir ( ) , "log_" + stringDatetime ( ) + ".log" ) ;
2931} ;
3032
33+ const appFile = ( name : string ) => {
34+ return path . join ( appLogsDir ( ) , name + "_" + stringDatetime ( ) + ".log" ) ;
35+ }
36+
3137const cleanOldLogs = ( keepDays : number ) => {
3238 const logDirs = [
3339 // 系统日志
@@ -104,6 +110,46 @@ const error = (label: string, data: any = null) => {
104110 return log ( "ERROR" , label , data ) ;
105111} ;
106112
113+ const appLog = ( name : string , level : "INFO" | "ERROR" , label : string , data : any = null ) => {
114+ if ( appFileNames [ name ] !== appFile ( name ) ) {
115+ appFileNames [ name ] = appFile ( name ) ;
116+ if ( appFileStreams [ name ] ) {
117+ appFileStreams [ name ] . end ( ) ;
118+ }
119+ const logDir = appLogsDir ( ) ;
120+ if ( ! fs . existsSync ( logDir ) ) {
121+ fs . mkdirSync ( logDir ) ;
122+ }
123+ appFileStreams [ name ] = fs . createWriteStream ( appFileNames [ name ] , { flags : "a" } ) ;
124+ }
125+ let line = [ ] ;
126+ line . push ( date . format ( new Date ( ) , "YYYY-MM-DD HH:mm:ss" ) ) ;
127+ line . push ( level ) ;
128+ line . push ( label ) ;
129+ if ( data ) {
130+ if ( ! [ "number" , "string" ] . includes ( typeof data ) ) {
131+ data = JSON . stringify ( data ) ;
132+ }
133+ line . push ( data ) ;
134+ }
135+ console . log ( `[APP:${ name } ] - ` + line . join ( " - " ) ) ;
136+ appFileStreams [ name ] . write ( line . join ( " - " ) + "\n" ) ;
137+ }
138+
139+ const appPath = ( name : string ) => {
140+ if ( ! appFileNames [ name ] ) {
141+ appFileNames [ name ] = appFile ( name ) ;
142+ }
143+ return appFileNames [ name ] ;
144+ }
145+
146+ const appInfo = ( name : string , label : string , data : any = null ) => {
147+ return appLog ( name , "INFO" , label , data ) ;
148+ }
149+ const appError = ( name : string , label : string , data : any = null ) => {
150+ return appLog ( name , "ERROR" , label , data ) ;
151+ } ;
152+
107153const infoRenderOrMain = ( label : string , data : any = null ) => {
108154 if ( electron . ipcRenderer ) {
109155 return electron . ipcRenderer . invoke ( "log:info" , label , data ) ;
@@ -119,7 +165,23 @@ const errorRenderOrMain = (label: string, data: any = null) => {
119165 }
120166} ;
121167
122- const collectRenderOrMain = async ( option ?: { startTime ?: string ; endTime ?: string ; limit ?: number } ) => {
168+ const appInfoRenderOrMain = ( name : string , label : string , data : any = null ) => {
169+ if ( electron . ipcRenderer ) {
170+ return electron . ipcRenderer . invoke ( "log:appInfo" , name , label , data ) ;
171+ } else {
172+ return appInfo ( name , label , data ) ;
173+ }
174+ }
175+
176+ const appErrorRenderOrMain = ( name : string , label : string , data : any = null ) => {
177+ if ( electron . ipcRenderer ) {
178+ return electron . ipcRenderer . invoke ( "log:appError" , name , label , data ) ;
179+ } else {
180+ return appError ( name , label , data ) ;
181+ }
182+ } ;
183+
184+ const collectRenderOrMain = async ( option ?: { startTime ?: string ; endTime ?: string ; limit ?: number } ) => {
123185 option = Object . assign (
124186 {
125187 startTime : dayjs ( ) . subtract ( 1 , "day" ) . format ( "YYYY-MM-DD HH:mm:ss" ) ,
@@ -194,10 +256,18 @@ export default {
194256 error,
195257 infoRenderOrMain,
196258 errorRenderOrMain,
259+ appPath,
260+ appInfo,
261+ appError,
262+ appInfoRenderOrMain,
263+ appErrorRenderOrMain,
197264 collectRenderOrMain,
198265} ;
199266
200267export const Log = {
201268 info : infoRenderOrMain ,
202269 error : errorRenderOrMain ,
270+ appPath,
271+ appInfo : appInfoRenderOrMain ,
272+ appError : appErrorRenderOrMain ,
203273} ;
0 commit comments