java Log4j封装,程序任何位置调用
一般写log4j,每个类都会定义一个logger
明显这样太麻烦了,
然后封装了一下,明显好用多了。
package tools; import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import org.apache.log4j.Level;
import org.apache.log4j.Logger; public class LogUtil {
private static final String LOG4J_PROPERITES_PATH = "log4j.properties"; public static void debug(Object str_debug) {
StackTraceElement stack[] = (new Throwable()).getStackTrace(); Logger logger = Logger.getLogger(stack[1].getClassName());
logger.log(LogUtil.class.getName(), Level.DEBUG, str_debug, null);
//logger.debug(str_debug);
} public static void info(Object str_info) {
StackTraceElement stack[] = (new Throwable()).getStackTrace(); Logger logger = Logger.getLogger(stack[1].getClassName());
logger.log(LogUtil.class.getName(), Level.INFO, str_info, null);
//logger.info(str_info);
} public static void error(Object str_err) {
StackTraceElement stack[] = (new Throwable()).getStackTrace(); Logger logger = Logger.getLogger(stack[1].getClassName());
logger.log(LogUtil.class.getName(), Level.ERROR, str_err, null);
//logger.error(str_err);
} @SuppressWarnings("unused")
private static void logClean(String... clean_types) {
if (clean_types.length == 0) {
return ;
}
InputStream in = ClassLoader.getSystemResourceAsStream(LOG4J_PROPERITES_PATH);
Properties p = new Properties();
try {
p.load(in);
} catch (IOException e) {
error("Properties 加载错误");
} for (int i = 0; i < clean_types.length; i++) {
String clean_type = clean_types[i];
String file_path = null;
switch(clean_type) {
case "debug" :
file_path = p.getProperty("log4j.appender.D.File");
break;
case "info" :
file_path = p.getProperty("log4j.appender.info.File");
break;
case "error" :
file_path = p.getProperty("log4j.appender.E.File");
break;
}
FileUtil.deleteEveryThing(file_path);
}
} public static void main(String[] args) {
//logClean("debug", "info", "error");
} }
java Log4j封装,程序任何位置调用的更多相关文章
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
- java经典小程序
1,编写程序,判断给定的某个年份是否是闰年. 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年. (2)若某个年份能被400整除,则也是闰年. import java.ut ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- java JNI 的实现(2)-java和C/C++的相互调用.
目录 概述 一,java代码 二,稍微注意通过javah生成的'C/C++'.h头文件和源java代码的关系 三,在C/C++中实现java的native方法(完整C/C++) 1,修改age,即Ja ...
- 简单java web应用程序搭建与部署
1. 准备工作 工具:tomcat.editplus.jdk.windows操作系统 操作:在windows操作系统上安装jdk.tomcat.editplus,配置JAVA_HOME,Path,CL ...
- java log4j基本配置及日志级别配置详解
java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾 ...
- Java10-java语法基础(九)——java的封装性
Java10-java语法基础(九)——java的封装性 一.Java的三大特性:封装.多态.继承 封装:通过类封装对象的数据成员和成员方法,保证只有可信的类或者对象能够访问这些方法和数据成员,对不可 ...
- java的GUI程序的基本思路是以JFrame为基础
JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化.最小化.关闭. JPanel – Java图形用户界面(GUI)工具包swing中的面 ...
- Java异常封装
转载: Java异常封装 Java里面的异常在真正工作中使用还是十分普遍的.什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码和异常描述. ...
随机推荐
- 启动haoop并运行wordcount
启动hadoop,这里hadoop的版本是2.7.4 进入Hadoop的安装目录的bin目录下,采用-format命令格式化文件系统. hadoop namenode -format hadoop d ...
- JavaScriptSerializer 时间格式化
时间格式化 Model m = , Dt = DateTime.Now }; JavaScriptSerializer js = new JavaScriptSerializer(); string ...
- 百度地图Api进阶教程-基础地图示例1.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Python time & datetime & string 相互转换
#!/usr/bin/env python# -*- coding:utf-8 -*- # @Datetime : 2017/11/23 下午12:37# @Author : Alfred Xue# ...
- 16 款最流行的JavaScript 框架
1. jQuery – Javascript框架 jQuery 是最流行的 JavaScript 框架,它简化了HTML 文档遍历.事件处理.动画和Ajax交互.jQuery插件非常之多. 2. Do ...
- 5G的7位电话号码,去重,内存20mb,代码实现。
转自:http://www.aboutyun.com/thread-11139-1-1.html 答案:首先,这个题考的不是分布式7位数,至少要用int来保存,那么int为4字节,20MB内存 10^ ...
- (转)非阻塞Connect对于select时应注意问题
对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后 ...
- 在linux上开发210的hdmi-servers输出
这段时间一直在研究hdmi-servers,因为友善对这个在是闭源的,所以由于兴趣的关系和工作的关系,决定自己写一个hdmi-servers. 在hdmi中,最关键的是弄清楚了Hdmi显示数据的怎么来 ...
- python 模块之间相互引用
模块层级关系: ----: |->AA.py |->BB.py |->CC.py AA.py from BB import BB class AA: def sub(self, x) ...
- RGB 颜色对照表
R G B 值 R G B 值 R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF00 浅灰蓝色 176 224 230 #B0E0E6 象牙黑 41 36 ...