19 package org.sleuthkit.autopsy.coreutils;
 
   21 import java.io.IOException;
 
   22 import java.nio.file.Paths;
 
   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.HashMap;
 
   30 import java.util.logging.LogRecord;
 
   44     private static final Handler 
consoleHandler = 
new java.util.logging.ConsoleHandler();
 
   57         String logFilePath = Paths.get(logDirectory, LOG_WITHOUT_STACK_TRACES).toString();
 
   59             FileHandler fileHandler = 
new FileHandler(logFilePath, LOG_SIZE, LOG_FILE_COUNT);
 
   60             fileHandler.setEncoding(LOG_ENCODING);
 
   61             fileHandler.setFormatter(
new Formatter() {
 
   63                 public String format(LogRecord record) {
 
   64                     return (
new Date(record.getMillis())).toString() + 
" " 
   65                             + record.getSourceClassName() + 
" " 
   66                             + record.getSourceMethodName() + 
"\n" 
   67                             + record.getLevel() + 
": " 
   68                             + this.formatMessage(record) + 
"\n";
 
   72         } 
catch (IOException ex) {
 
   73             throw new RuntimeException(String.format(
"Error initializing file handler for %s", logFilePath), ex); 
 
   86         String logFilePath = Paths.get(logDirectory, LOG_WITH_STACK_TRACES).toString();
 
   88             FileHandler fileHandler = 
new FileHandler(logFilePath, LOG_SIZE, LOG_FILE_COUNT);
 
   89             fileHandler.setEncoding(LOG_ENCODING);
 
   90             fileHandler.setFormatter(
new Formatter() {
 
   92                 public String format(LogRecord record) {
 
   93                     if (record.getThrown() != null) {
 
   94                         String stackTrace = 
""; 
 
   95                         for (StackTraceElement traceElem : record.getThrown().getStackTrace()) {
 
   96                             stackTrace += 
"\t" + traceElem.toString() + 
"\n"; 
 
   98                         return (
new Timestamp(record.getMillis())).toString() + 
" "  
   99                                 + record.getSourceClassName() + 
" "  
  100                                 + record.getSourceMethodName() + 
"\n"  
  101                                 + record.getLevel() + 
": "  
  102                                 + this.formatMessage(record) + 
"\n"  
  103                                 + record.getThrown().toString() + 
":\n"  
  107                         return (
new Timestamp(record.getMillis())).toString() + 
" "  
  108                                 + record.getSourceClassName() + 
" "  
  109                                 + record.getSourceMethodName() + 
"\n"  
  110                                 + record.getLevel() + 
": "  
  111                                 + this.formatMessage(record) + 
"\n"; 
 
  116         } 
catch (IOException ex) {
 
  117             throw new RuntimeException(String.format(
"Error initializing file handler for %s", logFilePath), ex); 
 
  138         for (
Logger logger : namesToLoggers.values()) {
 
  139             logger.addHandler(newUserFriendlyHandler);
 
  140             logger.addHandler(newDeveloperFriendlyHandler);
 
  141             logger.removeHandler(userFriendlyHandler);
 
  142             logger.removeHandler(userFriendlyHandler);
 
  151         userFriendlyHandler.close();
 
  152         userFriendlyHandler = newUserFriendlyHandler;
 
  153         developerFriendlyHandler.close();
 
  154         developerFriendlyHandler = newDeveloperFriendlyHandler;
 
  184         if (!namesToLoggers.containsKey(name)) {
 
  186             logger.addHandler(userFriendlyHandler);
 
  187             logger.addHandler(developerFriendlyHandler);
 
  188             namesToLoggers.put(name, logger);
 
  190         return namesToLoggers.get(name);
 
  203     private Logger(String name, String resourceBundleName) {
 
  204         super(name, resourceBundleName);
 
  205         super.setUseParentHandlers(
false);
 
  207             super.addHandler(consoleHandler);
 
static Version.Type getBuildType()
 
static final int LOG_SIZE
 
static final String LOG_WITHOUT_STACK_TRACES
 
synchronized static void setLogDirectory(String directoryPath)
 
Logger(String name, String resourceBundleName)
 
static final int LOG_FILE_COUNT
 
static FileHandler userFriendlyHandler
 
static final String LOG_ENCODING
 
static FileHandler developerFriendlyHandler
 
static final Handler consoleHandler
 
static FileHandler createFileHandlerWithTraces(String logDirectory)
 
static final Map< String, Logger > namesToLoggers
 
synchronized static Logger getLogger(String name)
 
static final String LOG_WITH_STACK_TRACES
 
synchronized static Logger getLogger(String name, String resourceBundleName)
 
static FileHandler createFileHandlerWithoutTraces(String logDirectory)