85
85
if ( TRACE_TCP_TRANSPORT_STATS ){
86
86
System.out.println( "**** TCP_TRANSPORT_STATS tracing on ****" );
89
int maxFileSize = 256 * 1024;
91
String logSize = System.getProperty("diag.logsize", null);
92
if (logSize != null) {
93
if (logSize.toLowerCase().endsWith("m")) {
94
maxFileSize = Integer.parseInt(logSize.substring(0,
95
logSize.length() - 1)) * 1024 * 1024;
97
maxFileSize = Integer.parseInt(logSize);
100
} catch (Throwable t) {
102
MAX_FILE_SIZE = maxFileSize;
90
private static final int MAX_FILE_SIZE = 256*1024; // get two of these per logger type
105
private static final int MAX_FILE_SIZE; // get two of these per logger type
92
107
private static final String CONFIG_KEY = "diagnostics.tidy_close";
98
113
private static boolean started_up;
99
114
private static boolean startup_complete;
101
private static Map loggers = new HashMap();
102
private static boolean loggers_enabled;
115
private static boolean enable_pending_writes;
117
private static Map<String,AEDiagnosticsLogger> loggers = new HashMap<String, AEDiagnosticsLogger>();
119
protected static boolean loggers_enabled;
104
121
private static List evidence_generators = new ArrayList();
106
123
private static boolean load_15_tried;
108
125
public static synchronized void
127
boolean _enable_pending )
111
129
if ( started_up ){
299
330
if ( logger == null ){
303
logger = new AEDiagnosticsLogger( name );
306
File f1 = getLogFile( logger );
308
logger.setFirstFile( false );
310
File f2 = getLogFile( logger );
312
logger.setFirstFile( true );
314
// if we were writing to the second file, carry on from there
316
if ( f1.exists() && f2.exists()){
318
if ( f1.lastModified() < f2.lastModified()){
320
logger.setFirstFile( false );
323
}catch( Throwable ignore ){
334
logger = new AEDiagnosticsLogger( debug_dir, name, MAX_FILE_SIZE, !enable_pending_writes );
327
336
loggers.put( name, logger );
331
339
return( logger );
347
355
getLogger( logger_name ).log( str );
350
protected static synchronized void
352
AEDiagnosticsLogger logger,
355
if ( !loggers_enabled ){
362
File log_file = getLogFile( logger );
365
* log_file.length will return 0 if the file doesn't exist, so we don't need
366
* to explicitly check for its existence.
368
if ( log_file.length() >= MAX_FILE_SIZE ){
370
logger.setFirstFile(!logger.isFirstFile());
372
log_file = getLogFile( logger );
374
// If the file doesn't exist, this will just return false.
378
Calendar now = GregorianCalendar.getInstance();
381
"[" + format(now.get(Calendar.DAY_OF_MONTH))+format(now.get(Calendar.MONTH)+1) + " " +
382
format(now.get(Calendar.HOUR_OF_DAY))+ ":" + format(now.get(Calendar.MINUTE)) + ":" + format(now.get(Calendar.SECOND)) + "] ";
384
str = timeStamp + str;
386
PrintWriter pw = null;
390
pw = new PrintWriter(new FileWriter( log_file, true ));
392
if (!logger.isWrittenToThisSession()) {
393
logger.setWrittenToThisSession(true);
394
pw.println("\n\n[" + now.get(Calendar.YEAR)
395
+ "] Log File Opened for " + Constants.APP_NAME + " "
396
+ Constants.AZUREUS_VERSION + "\n");
408
}catch( Throwable ignore ){
415
AEDiagnosticsLogger logger )
417
return( new File( debug_dir, logger.getName() + "_" + (logger.isFirstFile()?"1":"2") + ".log" ));
420
private static String
429
return( String.valueOf(n));
432
protected static void
434
AEDiagnosticsLogger logger,
438
ByteArrayOutputStream baos = new ByteArrayOutputStream();
440
PrintWriter pw = new PrintWriter( new OutputStreamWriter( baos ));
442
e.printStackTrace( pw );
446
log( logger, baos.toString());
448
}catch( Throwable ignore ){
453
358
public static void