+ {canLoadMore && (
+
+ {t('logs.load_more_hint')}
+
+ {t('logs.hidden_lines', { count: logState.visibleFrom })}
+
+
+ )}
+
+ {parsedVisibleLines.map((line, index) => {
+ const rowClassNames = [styles.logRow];
+ if (line.level === 'warn') rowClassNames.push(styles.rowWarn);
+ if (line.level === 'error' || line.level === 'fatal') rowClassNames.push(styles.rowError);
+ return (
+
+
{line.timestamp || ''}
+
+
+ {line.level && (
+
+ {line.level.toUpperCase()}
+
+ )}
+
+ {line.source && (
+
+ {line.source}
+
+ )}
+
+ {typeof line.statusCode === 'number' && (
+ = 200 && line.statusCode < 300
+ ? styles.statusSuccess
+ : line.statusCode >= 300 && line.statusCode < 400
+ ? styles.statusInfo
+ : line.statusCode >= 400 && line.statusCode < 500
+ ? styles.statusWarn
+ : styles.statusError
+ ].join(' ')}
+ >
+ {line.statusCode}
+
+ )}
+
+ {line.latency && {line.latency}}
+ {line.ip && {line.ip}}
+
+ {line.method && (
+
+ {line.method}
+
+ )}
+ {line.path && (
+
+ {line.path}
+
+ )}
+
+ {line.message &&
{line.message}
}
+
+
+ );
+ })}
+
+
) : (