1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package org.archive.crawler.util;
27
28 import java.io.File;
29 import java.lang.reflect.Constructor;
30 import java.util.logging.FileHandler;
31 import java.util.logging.Formatter;
32 import java.util.logging.Logger;
33
34 import org.archive.util.PropertyUtils;
35
36 /***
37 * Logging utils.
38 * @author stack
39 */
40 public class LogUtils {
41 /***
42 * Creates a file logger that use heritrix.properties file logger
43 * configuration.
44 * Change the java.util.logging.FileHandler.* properties in
45 * heritrix.properties to change file handler properties.
46 * Use this method if you want a class to log to its own file
47 * rather than use default (console) logger.
48 * @param logsDir Directory in which to write logs.
49 * @param baseName Base name to use for log file (Will have
50 * java.util.logging.FileHandler.pattern or '.log' for suffix).
51 * @param logger Logger whose handler we'll replace with the
52 * file handler created herein.
53 */
54 public static void createFileLogger(File logsDir, String baseName,
55 Logger logger) {
56 int limit =
57 PropertyUtils.getIntProperty("java.util.logging.FileHandler.limit",
58 1024 * 1024 * 1024 * 1024);
59 int count =
60 PropertyUtils.getIntProperty("java.util.logging.FileHandler.count", 1);
61 try {
62 String tmp =
63 System.getProperty("java.util.logging.FileHandler.pattern");
64 File logFile = new File(logsDir, baseName +
65 ((tmp != null && tmp.length() > 0)? tmp: ".log"));
66 FileHandler fh = new FileHandler(logFile.getAbsolutePath(), limit,
67 count, true);
68
69 tmp = System.getProperty("java.util.logging.FileHandler.formatter");
70 if (tmp != null && tmp.length() > 0) {
71 Constructor co = Class.forName(tmp).
72 getConstructor(new Class[] {});
73 Formatter f = (Formatter) co.newInstance(new Object[] {});
74 fh.setFormatter(f);
75 }
76 logger.addHandler(fh);
77 logger.setUseParentHandlers(false);
78 } catch (Exception e) {
79 logger.severe("Failed customization of logger: " + e.getMessage());
80 }
81 }
82 }