* 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; private final static int MAX_PRIORITY_LENGTH = 5;
public static String formatRecord(LogManager manager, LogRecord rec) { 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(); int size = 128 + rec.getMessage().length();
if (rec.getThrowable() != null) if (rec.getThrowable() != null)
size += 512; size += 512;
@ -37,7 +45,10 @@ class LogRecordFormatter {
for (int i = 0; i < format.length; ++i) { for (int i = 0; i < format.length; ++i) {
switch (format[i]) { switch (format[i]) {
case LogManager.DATE: 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; break;
case LogManager.CLASS: case LogManager.CLASS:
buf.append(getWhere(rec)); buf.append(getWhere(rec));

View File

@ -17,8 +17,6 @@ import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.util.Queue; import java.util.Queue;
import net.i2p.I2PAppContext;
/** /**
* Log writer thread that pulls log records from the LogManager, writes them to * 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 * 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) { private void writeRecord(LogRecord rec) {
String val = LogRecordFormatter.formatRecord(_manager, rec); String val = LogRecordFormatter.formatRecord(_manager, rec, true);
writeRecord(val); writeRecord(val);
// we always add to the console buffer, but only sometimes write to stdout // 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); _manager.getBuffer().addCritical(val);
if (_manager.getDisplayOnScreenLevel() <= rec.getPriority()) { if (_manager.getDisplayOnScreenLevel() <= rec.getPriority()) {
if (_manager.displayOnScreen()) { 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 f = new File(pattern);
File base = null; File base = null;
if (!f.isAbsolute()) if (!f.isAbsolute())
base = I2PAppContext.getGlobalContext().getLogDir(); base = _manager.getContext().getLogDir();
if ( (pattern.indexOf('#') < 0) && (pattern.indexOf('@') <= 0) ) { if ( (pattern.indexOf('#') < 0) && (pattern.indexOf('@') <= 0) ) {
if (base != null) if (base != null)