Merge pull request #1095 from sidheshenator/logger-issue

Logs appropriate method in case of exception. Lck files deleted.
This commit is contained in:
Richard Cordovano 2015-03-19 12:20:29 -04:00
commit d69e62f44c
2 changed files with 61 additions and 41 deletions

View File

@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.core;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.Level;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
@ -199,5 +200,8 @@ public class Installer extends ModuleInstall {
logger.log(Level.WARNING, "", e);
}
}
for (Handler h : logger.getHandlers()) {
h.close(); //must call h.close or a .LCK file will remain.
}
}
}

View File

@ -23,9 +23,11 @@ import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.SimpleFormatter;
import java.sql.Timestamp;
import java.util.Date;
import java.util.logging.LogRecord;
import org.sleuthkit.autopsy.casemodule.Case;
/**
@ -76,7 +78,51 @@ public final class Logger extends java.util.logging.Logger {
try {
FileHandler f = new FileHandler(logDirectory + File.separator + fileName, LOG_SIZE, LOG_FILE_COUNT);
f.setEncoding(LOG_ENCODING);
f.setFormatter(new SimpleFormatter());
switch (fileName) {
case LOG_WITHOUT_STACK_TRACES:
f.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return (new Date(record.getMillis())).toString() + " : "
+ record.getLevel() + ": "
+ record.getSourceClassName() + " "
+ record.getSourceMethodName() + ": "
+ record.getMessage() + "\n";
}
});
break;
case LOG_WITH_STACK_TRACES:
f.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
if (record.getThrown() != null) {
StackTraceElement ele[] = record.getThrown().getStackTrace();
String StackTrace = "";
for (StackTraceElement ele1 : ele) {
StackTrace += "\t" + ele1.toString() + "\n";
}
return (new Timestamp(record.getMillis())).toString() + " : "
+ record.getLevel() + ": "
+ record.getSourceClassName() + " "
+ record.getSourceMethodName() + ": "
+ record.getMessage() + " "
+ record.getThrown().toString() + ": "
+ StackTrace
+ "\n";
} else {
return (new Timestamp(record.getMillis())).toString() + " : "
+ record.getLevel() + ": "
+ record.getSourceClassName() + " "
+ record.getSourceMethodName() + ": "
+ record.getMessage() + " "
+ "\n";
}
}
});
break;
}
return f;
} catch (IOException e) {
throw new RuntimeException("Error initializing " + fileName + " file handler", e); //NON-NLS
@ -93,7 +139,7 @@ public final class Logger extends java.util.logging.Logger {
* @return org.sleuthkit.autopsy.coreutils.Logger instance
*/
public static Logger getLogger(String name) {
return new Logger(java.util.logging.Logger.getLogger(name));
return new Logger(name, null);
}
/**
@ -109,46 +155,16 @@ public final class Logger extends java.util.logging.Logger {
* @return org.sleuthkit.autopsy.coreutils.Logger instance
*/
public static Logger getLogger(String name, String resourceBundleName) {
return new Logger(java.util.logging.Logger.getLogger(name, resourceBundleName));
return new Logger(name, resourceBundleName);
}
private Logger(java.util.logging.Logger log) {
super(log.getName(), log.getResourceBundleName());
private Logger(String name, String resourceBundleName) {
super(name, resourceBundleName);
if (Version.getBuildType() == Version.Type.DEVELOPMENT) {
addHandler(console);
super.addHandler(console);
}
setUseParentHandlers(false);
addHandler(userFriendlyLogFile);
addHandler(developersLogFile);
}
@Override
public void log(Level level, String message, Throwable thrown) {
logUserFriendlyOnly(level, message, thrown);
removeHandler(userFriendlyLogFile);
super.log(level, message, thrown);
addHandler(userFriendlyLogFile);
}
@Override
public void logp(Level level, String sourceClass, String sourceMethod, String message, Throwable thrown) {
logUserFriendlyOnly(level, message, thrown);
removeHandler(userFriendlyLogFile);
super.logp(level, sourceClass, sourceMethod, message, thrown);
addHandler(userFriendlyLogFile);
}
private void logUserFriendlyOnly(Level level, String message, Throwable thrown) {
removeHandler(developersLogFile);
super.log(level, "{0}\nException: {1}", new Object[]{message, thrown.toString()}); //NON-NLS
addHandler(developersLogFile);
}
@Override
public void throwing(String sourceClass, String sourceMethod, Throwable thrown) {
removeHandler(userFriendlyLogFile);
super.throwing(sourceClass, sourceMethod, thrown);
addHandler(userFriendlyLogFile);
super.setUseParentHandlers(false);
super.addHandler(userFriendlyLogFile);
super.addHandler(developersLogFile);
}
}