@@ -25,6 +25,8 @@ import BoxArrowUp from "../../../../icons/BoxArrowUp";
25
25
import BoxArrowDown from "../../../../icons/BoxArrowDown" ;
26
26
import WarnFilledIcon from "../../../../icons/WarnFilledIcon" ;
27
27
28
+ import getByKey from "lodash/get" ;
29
+
28
30
const messageForConsoleMsg = ( log : LogMessage ) => {
29
31
// regex for terminal colors like e.g. `[31;4m `
30
32
const tColorRegex = / ( ( \[ [ 0 - 9 ; ] + m ) ) / g;
@@ -72,49 +74,53 @@ const messageForError = (log: LogMessage) => {
72
74
fontFamily : "monospace" ,
73
75
fontSize : "12px" ,
74
76
} ;
77
+
78
+ const getLogEntryKey = ( keyPath : string ) => {
79
+ return getByKey ( log , keyPath , "" ) ;
80
+ } ;
81
+
75
82
return (
76
83
< Fragment >
77
84
< div >
78
85
< b style = { labelStyle } > API: </ b >
79
- < span style = { dataStyle } > { log . api . name } </ span >
86
+ < span style = { dataStyle } > { getLogEntryKey ( " api.name" ) } </ span >
80
87
</ div >
81
88
< div >
82
89
< b style = { labelStyle } > Time: </ b >
83
- < span style = { dataStyle } > { log . time . toString ( ) } </ span >
90
+ < span style = { dataStyle } > { getLogEntryKey ( " time" ) . toString ( ) } </ span >
84
91
</ div >
85
92
< div >
86
93
< b style = { labelStyle } > DeploymentID: </ b >
87
- < span style = { dataStyle } > { log . deploymentid } </ span >
94
+ < span style = { dataStyle } > { getLogEntryKey ( " deploymentid" ) } </ span >
88
95
</ div >
89
96
< div >
90
97
< b style = { labelStyle } > RequestID: </ b >
91
- < span style = { dataStyle } > { log . requestID } </ span >
98
+ < span style = { dataStyle } > { getLogEntryKey ( " requestID" ) } </ span >
92
99
</ div >
93
100
< div >
94
101
< b style = { labelStyle } > RemoteHost: </ b >
95
- < span style = { dataStyle } > { log . remotehost } </ span >
102
+ < span style = { dataStyle } > { getLogEntryKey ( " remotehost" ) } </ span >
96
103
</ div >
97
104
< div >
98
105
< b style = { labelStyle } > UserAgent: </ b >
99
- < span style = { dataStyle } > { log . userAgent } </ span >
106
+ < span style = { dataStyle } > { getLogEntryKey ( " userAgent" ) } </ span >
100
107
</ div >
101
108
< div >
102
109
< b style = { labelStyle } > Error: </ b >
103
- < span style = { dataStyle } > { log . error && log . error . message } </ span >
110
+ < span style = { dataStyle } > { getLogEntryKey ( " error. message" ) } </ span >
104
111
</ div >
105
112
< br />
106
113
< div >
107
114
< b style = { labelStyle } > Backtrace: </ b >
108
115
</ div >
109
- { log . error &&
110
- log . error . source . map ( ( e , i ) => {
111
- return (
112
- < div >
113
- < b style = { labelStyle } > { i } : </ b >
114
- < span style = { dataStyle } > { e } </ span >
115
- </ div >
116
- ) ;
117
- } ) }
116
+ { ( getLogEntryKey ( "error.source" ) || [ ] ) . map ( ( e : any , i : number ) => {
117
+ return (
118
+ < div >
119
+ < b style = { labelStyle } > { i } : </ b >
120
+ < span style = { dataStyle } > { e } </ span >
121
+ </ div >
122
+ ) ;
123
+ } ) }
118
124
</ Fragment >
119
125
) ;
120
126
} ;
@@ -123,28 +129,34 @@ const LogLine = (props: { log: LogMessage }) => {
123
129
const { log } = props ;
124
130
const [ open , setOpen ] = useState < boolean > ( false ) ;
125
131
132
+ const getLogLineKey = ( keyPath : string ) => {
133
+ return getByKey ( log , keyPath , "" ) ;
134
+ } ;
135
+
126
136
let logMessage = "" ;
127
- if ( log . ConsoleMsg !== "" ) {
128
- logMessage = log . ConsoleMsg ;
129
- } else if ( log . error !== null && log . error . message !== "" ) {
130
- logMessage = log . error . message ;
137
+ let consoleMsg = getLogLineKey ( "ConsoleMsg" ) ;
138
+ let errMsg = getLogLineKey ( "error.message" ) ;
139
+ if ( consoleMsg !== "" ) {
140
+ logMessage = consoleMsg ;
141
+ } else if ( errMsg !== "" ) {
142
+ logMessage = errMsg ;
131
143
}
132
144
// remove any non ascii characters, exclude any control codes
133
- let titleLogMessage = logMessage . replace ( / ━ | ┏ | ┓ | ┃ | ┗ | ┛ / g, "" ) ;
145
+ let titleLogMessage = ( logMessage || "" ) . replace ( / ━ | ┏ | ┓ | ┃ | ┗ | ┛ / g, "" ) ;
134
146
// remove any non ascii characters, exclude any control codes
135
147
titleLogMessage = titleLogMessage . replace ( / ( [ ^ \x20 - \x7F ] ) / g, "" ) ;
136
148
137
149
// regex for terminal colors like e.g. `[31;4m `
138
150
const tColorRegex = / ( ( \[ [ 0 - 9 ; ] + m ) ) / g;
139
151
140
152
let fullMessage = < Fragment /> ;
141
- if ( log . ConsoleMsg !== "" ) {
153
+ if ( consoleMsg !== "" ) {
142
154
fullMessage = messageForConsoleMsg ( log ) ;
143
- } else if ( log . error !== null && log . error . message !== "" ) {
155
+ } else if ( errMsg !== "" ) {
144
156
fullMessage = messageForError ( log ) ;
145
157
}
146
158
147
- titleLogMessage = titleLogMessage . replace ( tColorRegex , "" ) ;
159
+ titleLogMessage = ( titleLogMessage || "" ) . replace ( tColorRegex , "" ) ;
148
160
149
161
let dateStr = < Moment format = "YYYY/MM/DD UTC HH:mm:ss" > { log . time } </ Moment > ;
150
162
if ( log . time . getFullYear ( ) === 1 ) {
0 commit comments