OLD | NEW |
---|---|
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library driver; | 5 library driver; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 import 'dart:math'; | 9 import 'dart:math'; |
10 | 10 |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
376 } else { | 376 } else { |
377 // No path to the SDK provided; use DirectoryBasedDartSdk.defaultSdk, | 377 // No path to the SDK provided; use DirectoryBasedDartSdk.defaultSdk, |
378 // which will make a guess. | 378 // which will make a guess. |
379 defaultSdk = DirectoryBasedDartSdk.defaultSdk; | 379 defaultSdk = DirectoryBasedDartSdk.defaultSdk; |
380 } | 380 } |
381 // | 381 // |
382 // Initialize the instrumentation service. | 382 // Initialize the instrumentation service. |
383 // | 383 // |
384 String logFilePath = results[INSTRUMENTATION_LOG_FILE]; | 384 String logFilePath = results[INSTRUMENTATION_LOG_FILE]; |
385 if (logFilePath != null) { | 385 if (logFilePath != null) { |
386 _rollLogFiles(logFilePath, 5); | |
386 FileInstrumentationServer fileBasedServer = | 387 FileInstrumentationServer fileBasedServer = |
387 new FileInstrumentationServer(logFilePath); | 388 new FileInstrumentationServer(logFilePath); |
388 instrumentationServer = instrumentationServer != null | 389 instrumentationServer = instrumentationServer != null |
389 ? new MulticastInstrumentationServer( | 390 ? new MulticastInstrumentationServer( |
390 [instrumentationServer, fileBasedServer]) | 391 [instrumentationServer, fileBasedServer]) |
391 : fileBasedServer; | 392 : fileBasedServer; |
392 } | 393 } |
393 InstrumentationService service = | 394 InstrumentationService service = |
394 new InstrumentationService(instrumentationServer); | 395 new InstrumentationService(instrumentationServer); |
395 service.logVersion(_readUuid(service), results[CLIENT_ID], | 396 service.logVersion(_readUuid(service), results[CLIENT_ID], |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
570 try { | 571 try { |
571 uuidFile.parent.createSync(recursive: true); | 572 uuidFile.parent.createSync(recursive: true); |
572 uuidFile.writeAsStringSync(uuid); | 573 uuidFile.writeAsStringSync(uuid); |
573 } catch (exception, stackTrace) { | 574 } catch (exception, stackTrace) { |
574 service.logPriorityException(exception, stackTrace); | 575 service.logPriorityException(exception, stackTrace); |
575 // Slightly alter the uuid to indicate it was not persisted | 576 // Slightly alter the uuid to indicate it was not persisted |
576 uuid = 'temp-$uuid'; | 577 uuid = 'temp-$uuid'; |
577 } | 578 } |
578 return uuid; | 579 return uuid; |
579 } | 580 } |
581 | |
582 /** | |
583 * Perform log files rolling. | |
584 * | |
585 * Rename existing files with names `[path].(x)` to `[path].(x+1)`. | |
586 * Keep at most [numOld] files. | |
587 * Rename the file with the given [path] to `[path].1`. | |
588 */ | |
589 static void _rollLogFiles(String path, int numOld) { | |
590 for (int i = numOld - 1; i >= 0; i--) { | |
591 try { | |
592 String oldPath = i == 0 ? path : '$path.$i'; | |
593 new File(oldPath).renameSync('$path.${i+1}'); | |
Brian Wilkerson
2015/11/04 23:00:29
Does rename work if there's already a file with th
scheglov
2015/11/05 16:40:27
Yes, it does.
/**
* Synchronously renames t
| |
594 } catch (e) {} | |
595 } | |
596 } | |
580 } | 597 } |
OLD | NEW |