19 package org.sleuthkit.autopsy.coreutils;
22 import java.io.IOException;
23 import java.util.logging.FileHandler;
24 import java.util.logging.Formatter;
25 import java.util.logging.Handler;
26 import java.sql.Timestamp;
27 import java.util.Date;
28 import java.util.logging.LogRecord;
40 private static final Handler
console =
new java.util.logging.ConsoleHandler();
47 FileHandler f =
new FileHandler(logDirectory + File.separator + fileName, LOG_SIZE, LOG_FILE_COUNT);
48 f.setEncoding(LOG_ENCODING);
50 case LOG_WITHOUT_STACK_TRACES:
51 f.setFormatter(
new Formatter() {
53 public String format(LogRecord record) {
55 return (
new Date(record.getMillis())).toString() +
" "
56 + record.getSourceClassName() +
" "
57 + record.getSourceMethodName() +
"\n"
58 + record.getLevel() +
": "
59 + this.formatMessage(record) +
"\n";
64 case LOG_WITH_STACK_TRACES:
65 f.setFormatter(
new Formatter() {
67 public String format(LogRecord record) {
69 if (record.getThrown() != null) {
71 StackTraceElement ele[] = record.getThrown().getStackTrace();
72 String StackTrace =
"";
73 for (StackTraceElement ele1 : ele) {
74 StackTrace +=
"\t" + ele1.toString() +
"\n";
77 return (
new Timestamp(record.getMillis())).toString() +
" "
78 + record.getSourceClassName() +
" "
79 + record.getSourceMethodName() +
"\n"
80 + record.getLevel() +
": "
81 + this.formatMessage(record) +
"\n"
82 + record.getThrown().toString() +
": "
86 return (
new Timestamp(record.getMillis())).toString() +
" "
87 + record.getSourceClassName() +
" "
88 + record.getSourceMethodName() +
"\n"
89 + record.getLevel() +
": "
90 + this.formatMessage(record) +
"\n";
98 }
catch (IOException e) {
99 throw new RuntimeException(
"Error initializing " + fileName +
" file handler", e);
109 if (null != directoryPath && !directoryPath.isEmpty()) {
110 File directory =
new File(directoryPath);
111 if (directory.exists() && directory.canWrite()) {
113 userFriendlyLogFile.close();
114 userFriendlyLogFile =
createFileHandler(directoryPath, LOG_WITHOUT_STACK_TRACES);
115 developersLogFile.close();
132 return new Logger(name, null);
148 return new Logger(name, resourceBundleName);
151 private Logger(String name, String resourceBundleName) {
152 super(name, resourceBundleName);
154 super.addHandler(console);
157 super.setUseParentHandlers(
false);
158 super.addHandler(userFriendlyLogFile);
159 super.addHandler(developersLogFile);
static Version.Type getBuildType()
static final int LOG_SIZE
static final String LOG_WITHOUT_STACK_TRACES
static FileHandler createFileHandler(String logDirectory, String fileName)
static void setLogDirectory(String directoryPath)
Logger(String name, String resourceBundleName)
static final int LOG_FILE_COUNT
static final String LOG_ENCODING
static FileHandler userFriendlyLogFile
static final Object fileHandlerLock
static final String LOG_WITH_STACK_TRACES
static Logger getLogger(String name, String resourceBundleName)
static final Handler console
static Logger getLogger(String name)
static FileHandler developersLogFile