java实现log4j_log4j在java中实现
public class AccLogBase {
/**致命错误. */
public static final int LOG_LEVEL_FATAL = 1;
/** 错误. */
public static final int LOG_LEVEL_ERROR = 2;
/** 警告. */
public static final int LOG_LEVEL_WARN = 3;
/**信息. */
public static final int LOG_LEVEL_INFO = 4;
/** debug. */
public static final int LOG_LEVEL_DEBUG = 5;
/** 定义log基类 */
private static Logger log = null;
/**
* 获得log实例.
* @param cls 输出log日志class
*/
@SuppressWarnings("unchecked")
protected final void getLogInstance(final Class cls) {
if (log == null) {
log = Logger.getLogger(cls);
}
}
/**
* 构造函数.
*/
public AccLogBase() {
//这里面将log4j.properties放到src路径下,如果是weblogic服务器,放到domain目录下
//或者通过 Properties prop = new Properties();InputStream inputStream = new FileInputStream(“C:/log4j.properties”); //log4j.properties的绝对路径
//prop.load(inputStream); PropertyConfigurator.configure(prop);
PropertyConfigurator.configure("log4j.properties");
getLogInstance(this.getClass());
}
/**
* 输出log日志.
* @param className
* @param methodName
* @param level
* @param msg
*/
protected final void writeLog(final String className,final String msg, final String methodName,final Throwable exp,final int level) {
StringBuffer message = new StringBuffer();
message.append("[");
message.append(className);
message.append("#");
message.append(methodName);
message.append("]");
switch (level) {
case LOG_LEVEL_FATAL:
if (exp != null) {
log.fatal(message.toString(), exp);
} else {
log.fatal(message.toString());
}
break;
case LOG_LEVEL_ERROR:
if (exp != null) {
log.error(message.toString(), exp);
} else {
log.error(message.toString());
}
break;
case LOG_LEVEL_WARN:
if (exp != null) {
log.warn(message.toString(), exp);
} else {
log.warn(message.toString());
}
break;
case LOG_LEVEL_INFO:
if (exp != null) {
log.info(message.toString(), exp);
} else {
log.info(message.toString());
}
break;
case LOG_LEVEL_DEBUG:
if (exp != null) {
log.debug(message.toString(), exp);
} else {
log.debug(message.toString());
}
break;
default:
break;
}
}
}
public class TestLog extends AccLogBase {
/**
* 构造函数.
*/
public TestLog() {
}
private String className = this.getClass().getSimpleName();
private String methodName = "";
/**
* 测试日志输出.
*/
public final void testLog () {
methodName = new Throwable().getStackTrace()[0].getMethodName();
String message = “测试日志输出”;
//+ 処理開始,输出日志文件。
writeLog(className,message, methodName,"",4);
}
}
#######log4j.properties配置信息########
log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=./servers/AdminServer/logs/acc_servelet.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m %n log4j.rootLogger=DEBUG, file
java实现log4j_log4j在java中实现相关推荐
- java 枚举的继承_java中枚举类可以被继承吗?
java 枚举类 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: ● 枚举类继承了java.lang.Enum类,而不是默认的Object类.而 ...
- jsp与java的关系_jsp教程中:jsp与servlet的区别和关系
jsp教程上:我们一定学了servlet,也学习了jsp,那么jsp与servlet的区别是什么呢,jsp与servlet又有什么关系呢?下面我们先创建一个demo.jsp的页面,然后tomcat运行 ...
- java comparable接口作用_Java 中 Comparable 接口的意义和用法
一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...
- java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...
学习makefile教程,ubuntu中文网 1.写一个简单的java项目,不需要外部jar,用的简单的 importjava.util.ArrayList;是可以从CLASSPATH环境变量中找到的 ...
- java for循环迭代_JAVA中的for-each循环与迭代
在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...
- linux java 栈_关于Java中栈与堆的思考
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度比堆要快,仅次于直接位于C ...
- Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符
Java:判断一个字符串中包含指定字符子串,判断一个字符串中存在指定字符 字符串的contains方法可以判断一个字符串中是否存在另一个字符子串,示例如下 String Str = "Hel ...
- 取java.sql.date日期_JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]...
1.如何将java.util.Date转化为java.sql.Date? 转化: java.sql.Date sd; java.util.Date ud; //initialize the ud su ...
- java判断栈空_java中栈的应用-判断分隔符是否合理
栈是软件系统应用最广泛的数据结构之一,只要涉及先进后出的处理特征都可以使用栈结构. 例如:函数递归调用中的地址和参数值的保存,文本编辑器中序列的保存,在编译软件设计中的括号匹配及表达式求值,网页访问历 ...
最新文章
- 鲲鹏服务器设置ip文件,IPFS在鲲鹏云服务器中的安装与编译过程记录
- 第6章-一阶多智体系统一致性-->6.5 带有领航者系统一致性
- Nginx报错request entity too large的解决方案
- C. Vanya and Scales
- flare3d_clone
- python 字典排序成绩_集体备课第四章 python基础与顺序结构
- 梯度消失与梯度爆炸----解决方案(一)
- SPSS问卷中的人口学变量是否要用?以及如何选用?【SPSS 065期】
- NumPy的详细教程
- 用Global Mapper软件批处理将dwg转shp
- Arduino基础学习
- 使用feed,欢迎使用http://feed.feedsky.com/xu_fan_blog订阅
- eclipse 中各种小图标含义
- 一个小程序走完诉讼全程,腾讯云加速推动“智慧法院”方案落地
- UG NX 10 控制基准平面的显示大小
- 开放式式商业模式_开放式和封闭式耳机之间有什么区别,我应该得到什么?
- (最新,所有kali版本通用)kali中安装搜狗输入方法
- 近红外光谱、拉曼光谱及高光谱的区别
- 用八叉树优化RayCasting
- 中考计算机文件知识点,操作知识点微机中考复习资料.doc
热门文章
- dynamo python修改多个参数_python之函数
- Win11任务栏如何设置在顶部
- 腾讯视频如何缓存视频
- win10如何关闭Windows Defender安全保护程序
- vant+cell+picker+级联选择默认选中
- c:forecah 参数param 不能作为对象名
- SSM 框架整合 spring 发送邮件功能实现!
- 文本删除空行_010 Editor for mac(文本和十六进制编辑器)
- 乌班图配置mysql Java_Ubuntu准备+MySQL+Java
- app每秒并发数_性能测试连载 (38) jmeter 线程数与性能测试的负载模式