java Log4j封装,程序任何位置调用

一般写log4j,每个类都会定义一个logger

明显这样太麻烦了,

然后封装了一下,明显好用多了。

 1 package tools;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.Properties;
 6 
 7 import org.apache.log4j.Level;
 8 import org.apache.log4j.Logger;
 9 
10 public class LogUtil {
11     private static final String LOG4J_PROPERITES_PATH = "log4j.properties";
12     
13     public static void debug(Object str_debug) {
14         StackTraceElement stack[] = (new Throwable()).getStackTrace();
15 
16         Logger logger = Logger.getLogger(stack[1].getClassName());
17         logger.log(LogUtil.class.getName(), Level.DEBUG, str_debug, null);
18         //logger.debug(str_debug);
19     }
20     
21     public static void info(Object str_info) {
22         StackTraceElement stack[] = (new Throwable()).getStackTrace();
23 
24         Logger logger = Logger.getLogger(stack[1].getClassName());
25         logger.log(LogUtil.class.getName(), Level.INFO, str_info, null);
26         //logger.info(str_info);
27     }
28     
29     public static void error(Object str_err) {
30         StackTraceElement stack[] = (new Throwable()).getStackTrace();
31 
32         Logger logger = Logger.getLogger(stack[1].getClassName());
33         logger.log(LogUtil.class.getName(), Level.ERROR, str_err, null);
34         //logger.error(str_err);
35     }
36     
37     @SuppressWarnings("unused")
38     private static void logClean(String... clean_types) {
39         if (clean_types.length == 0) {
40             return ;
41         }
42         InputStream in = ClassLoader.getSystemResourceAsStream(LOG4J_PROPERITES_PATH);            
43         Properties p = new Properties();  
44         try {
45             p.load(in);
46         } catch (IOException e) {
47             error("Properties 加载错误");
48         }
49         
50         for (int i = 0; i < clean_types.length; i++) {
51             String clean_type = clean_types[i];
52             String file_path = null;
53             switch(clean_type) {
54             case "debug" :
55                 file_path = p.getProperty("log4j.appender.D.File");
56                 break;
57             case "info" :
58                 file_path = p.getProperty("log4j.appender.info.File");
59                 break;
60             case "error" :
61                 file_path = p.getProperty("log4j.appender.E.File");
62                 break;
63             }
64             FileUtil.deleteEveryThing(file_path);
65         }        
66     }
67     
68     public static void main(String[] args) {
69         //logClean("debug", "info", "error");
70     }
71 
72 }
原文地址:https://www.cnblogs.com/chenhuan001/p/6575102.html