|
16 | 16 | import datadog.trace.util.AgentTaskScheduler.Scheduled; |
17 | 17 | import datadog.trace.util.Strings; |
18 | 18 | import java.io.ByteArrayOutputStream; |
| 19 | +import java.io.File; |
19 | 20 | import java.io.IOException; |
20 | | -import java.io.InputStream; |
| 21 | +import java.io.RandomAccessFile; |
21 | 22 | import java.lang.management.ManagementFactory; |
22 | 23 | import java.lang.management.RuntimeMXBean; |
23 | 24 | import java.lang.management.ThreadInfo; |
@@ -294,18 +295,15 @@ private void addLogs(ZipOutputStream zip) throws IOException { |
294 | 295 | try { |
295 | 296 | long size = Files.size(path); |
296 | 297 | if (size > MAX_LOGFILE_SIZE_BYTES) { |
297 | | - try (InputStream in = Files.newInputStream(path)) { |
298 | | - final byte[] bufferBeg = new byte[MAX_LOGFILE_SIZE_BYTES / 2]; |
299 | | - int dataReadBeg = in.read(bufferBeg); |
300 | | - long skipped = in.skip(size - MAX_LOGFILE_SIZE_BYTES); |
301 | | - final byte[] bufferEnd = new byte[MAX_LOGFILE_SIZE_BYTES - dataReadBeg]; |
302 | | - int dataReadEnd = in.read(bufferEnd); |
303 | | - TracerFlare.addBinary(zip, "tracer_begin.log", bufferBeg); |
304 | | - TracerFlare.addBinary(zip, "tracer_end.log", bufferEnd); |
305 | | - log.debug( |
306 | | - "{} bytes from the log file have been copied. {} have been ignored ", |
307 | | - dataReadBeg + dataReadEnd, |
308 | | - skipped); |
| 298 | + int maxSizeOfSplit = MAX_LOGFILE_SIZE_BYTES / 2; |
| 299 | + File originalFile = new File(path.toString()); |
| 300 | + try (RandomAccessFile ras = new RandomAccessFile(originalFile, "r")) { |
| 301 | + final byte[] buffer = new byte[maxSizeOfSplit]; |
| 302 | + ras.readFully(buffer); |
| 303 | + TracerFlare.addBinary(zip, "tracer_begin.log", buffer); |
| 304 | + ras.seek(size - maxSizeOfSplit); |
| 305 | + ras.readFully(buffer); |
| 306 | + TracerFlare.addBinary(zip, "tracer_end.log", buffer); |
309 | 307 | } |
310 | 308 | } else { |
311 | 309 | TracerFlare.addBinary(zip, "tracer.log", readAllBytes(path)); |
|
0 commit comments