1 /*
2 * This file is part of dependency-check-core.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
17 */
18 package org.owasp.dependencycheck.utils;
19
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.util.logging.FileHandler;
23 import java.util.logging.Level;
24 import java.util.logging.LogManager;
25 import java.util.logging.Logger;
26 import java.util.logging.SimpleFormatter;
27
28 /**
29 * A utility class to aide in the setup of the logging mechanism.
30 *
31 * @author Jeremy Long <jeremy.long@owasp.org>
32 */
33 public final class LogUtils {
34
35 /**
36 * The logger.
37 */
38 private static final Logger LOGGER = Logger.getLogger(LogUtils.class.getName());
39
40 /**
41 * Private constructor for a utility class.
42 */
43 private LogUtils() {
44 }
45
46 /**
47 * Configures the logger for use by the application.
48 *
49 * @param in the input stream to read the log settings from
50 * @param verboseLogFile the file path for the verbose log
51 */
52 public static void prepareLogger(InputStream in, String verboseLogFile) {
53 try {
54 LogManager.getLogManager().reset();
55 LogManager.getLogManager().readConfiguration(in);
56 if (verboseLogFile != null && !verboseLogFile.isEmpty()) {
57 verboseLoggingEnabled = true;
58 final Logger logger = Logger.getLogger("");
59 final FileHandler handler = new FileHandler(verboseLogFile, true);
60 handler.setFormatter(new SimpleFormatter());
61 handler.setLevel(Level.FINE);
62 handler.setFilter(new LogFilter());
63 logger.addHandler(handler);
64 logger.setLevel(Level.FINE);
65 }
66 } catch (IOException ex) {
67 LOGGER.log(Level.FINE, "IO Error preparing the logger", ex);
68 } catch (SecurityException ex) {
69 LOGGER.log(Level.FINE, "Error preparing the logger", ex);
70 } finally {
71 if (in != null) {
72 try {
73 in.close();
74 } catch (Throwable ex) {
75 LOGGER.log(Level.FINEST, "Error closing resource stream", ex);
76 }
77 }
78 }
79 }
80 /**
81 * Whether or not verbose logging is enabled.
82 */
83 private static boolean verboseLoggingEnabled = false;
84
85 /**
86 * Get the value of verboseLoggingEnabled.
87 *
88 * @return the value of verboseLoggingEnabled
89 */
90 public static boolean isVerboseLoggingEnabled() {
91 return verboseLoggingEnabled;
92 }
93 }