1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.owasp.dependencycheck.utils;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.util.logging.FileHandler;
24 import java.util.logging.Level;
25 import java.util.logging.LogManager;
26 import java.util.logging.Logger;
27 import java.util.logging.SimpleFormatter;
28
29
30
31
32
33
34 public final class LogUtils {
35
36
37
38
39 private static final Logger LOGGER = Logger.getLogger(LogUtils.class.getName());
40
41
42
43
44 private LogUtils() {
45 }
46
47
48
49
50
51
52
53 public static void prepareLogger(InputStream in, String verboseLogFile) {
54 try {
55 LogManager.getLogManager().reset();
56 LogManager.getLogManager().readConfiguration(in);
57
58 if (verboseLogFile != null && !verboseLogFile.isEmpty()) {
59 verboseLoggingEnabled = true;
60 final Logger logger = Logger.getLogger("");
61 final File logFile = new File(verboseLogFile);
62 final File logDir = logFile.getParentFile();
63 if (logDir != null && !logDir.isDirectory() && !logDir.mkdirs()) {
64 final String msg = String.format("Unable to create directory '%s', verbose logging will be disabled.",
65 logDir.getAbsolutePath());
66 throw new IOException(msg);
67 }
68 final FileHandler fileHandler = new FileHandler(verboseLogFile, true);
69 fileHandler.setFormatter(new SimpleFormatter());
70 fileHandler.setLevel(Level.FINE);
71 fileHandler.setFilter(new LogFilter());
72
73 logger.addHandler(fileHandler);
74 logger.setLevel(Level.FINE);
75 }
76 } catch (IOException ex) {
77 LOGGER.log(Level.WARNING, "IO Error preparing the logger", ex);
78 } catch (SecurityException ex) {
79 LOGGER.log(Level.WARNING, "Error preparing the logger", ex);
80 } catch (Throwable ex) {
81 LOGGER.log(Level.WARNING, "Error preparing the logger", ex);
82 } finally {
83 if (in != null) {
84 try {
85 in.close();
86 } catch (IOException ex) {
87 LOGGER.log(Level.FINEST, "Error closing resource stream", ex);
88 }
89 }
90 }
91 }
92
93
94
95 private static boolean verboseLoggingEnabled = false;
96
97
98
99
100
101
102 public static boolean isVerboseLoggingEnabled() {
103 return verboseLoggingEnabled;
104 }
105 }