* Log: Don't double-timestamp CRITS in wrapper.log

This commit is contained in:
zzz
2010-12-11 13:25:58 +00:00
parent 10f674a782
commit 638e04beb8
2 changed files with 19 additions and 6 deletions

View File

@ -29,6 +29,14 @@ class LogRecordFormatter {
private final static int MAX_PRIORITY_LENGTH = 5;
public static String formatRecord(LogManager manager, LogRecord rec) {
return formatRecord(manager, rec, true);
}
/**
* @param showDate if false, skip any date in the format (use when writing to wrapper log)
* @since 0.8.2
*/
static String formatRecord(LogManager manager, LogRecord rec, boolean showDate) {
int size = 128 + rec.getMessage().length();
if (rec.getThrowable() != null)
size += 512;
@ -37,7 +45,10 @@ class LogRecordFormatter {
for (int i = 0; i < format.length; ++i) {
switch (format[i]) {
case LogManager.DATE:
buf.append(getWhen(manager, rec));
if (showDate)
buf.append(getWhen(manager, rec));
else if (i+1 < format.length && format[i+1] == ' ')
i++; // skip following space
break;
case LogManager.CLASS:
buf.append(getWhere(rec));

View File

@ -17,8 +17,6 @@ import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Queue;
import net.i2p.I2PAppContext;
/**
* Log writer thread that pulls log records from the LogManager, writes them to
* the current logfile, and rotates the logs as necessary. This also periodically
@ -112,7 +110,7 @@ class LogWriter implements Runnable {
}
private void writeRecord(LogRecord rec) {
String val = LogRecordFormatter.formatRecord(_manager, rec);
String val = LogRecordFormatter.formatRecord(_manager, rec, true);
writeRecord(val);
// we always add to the console buffer, but only sometimes write to stdout
@ -121,7 +119,11 @@ class LogWriter implements Runnable {
_manager.getBuffer().addCritical(val);
if (_manager.getDisplayOnScreenLevel() <= rec.getPriority()) {
if (_manager.displayOnScreen()) {
System.out.print(val);
// wrapper log already does time stamps, so reformat without the date
if (System.getProperty("wrapper.version") != null)
System.out.print(LogRecordFormatter.formatRecord(_manager, rec, false));
else
System.out.print(val);
}
}
}
@ -199,7 +201,7 @@ class LogWriter implements Runnable {
File f = new File(pattern);
File base = null;
if (!f.isAbsolute())
base = I2PAppContext.getGlobalContext().getLogDir();
base = _manager.getContext().getLogDir();
if ( (pattern.indexOf('#') < 0) && (pattern.indexOf('@') <= 0) ) {
if (base != null)