封装log4j要素:
1、对外不暴露log4j的包名和类名。
2、保护日志发生现场LocationInfo(日志发生时的类、方法、类文件及行数)。
3、方便的格式化日志字符串,MessageFormat.format()。
4、保持效率。
5、方便使用。
下面为部分片段,详情见附件。
更多功能,参考org.apache.log4j.logMF和org.apache.log4j.logSF。
public class Logger {
private final org.apache.log4j.Logger logger;
private Logger(Class<?> clazz) {
logger = org.apache.log4j.Logger.getLogger(clazz);
}
private Logger() {
logger = org.apache.log4j.Logger.getRootLogger();
}
public static Logger getLogger(Class<?> clazz) {
return new Logger(clazz);
}
public static Logger getRootLogger() {
return new Logger();
}
public void debug(Object message) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, message);
}
}
public void debug(Object message, Throwable t) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, message, t);
}
}
public void debug(String pattern, Object... arguments) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, format(pattern, arguments));
}
}
public void debug(String pattern, Throwable t, Object... arguments) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, format(pattern, arguments), t);
}
}
public void assertLog(boolean assertion, String message) {
if (!assertion) {
forcedLog(logger, Level.ERROR, message);
}
}
private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, null));
}
private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message, Throwable t) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, t));
}
private static String format(String pattern, Object... arguments) {
return MessageFormat.format(pattern, arguments);
}
private static final String FQCN;
static {
FQCN = Logger.class.getName();
}
}
分享到:
相关推荐
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制来记录应用的运行情况,这对于调试、性能分析、问题追踪以及系统监控至关重要。这篇学习...
### Log4J学习笔记 #### 一、Log4J配置文件的学习 在深入理解Log4J之前,我们先从配置文件入手。Log4J支持多种配置文件格式,其中包括XML和Java特性文件(键=值)。这里我们将重点介绍如何使用Java特性文件作为...
`koa-log4`是基于`log4js-node`的一个封装,专门为Koa框架设计,提供方便的日志分割和输出功能。 首先,让我们了解下项目的目录结构。在后端代码中,有一个`logs`目录用于存储所有日志文件,包括`db.js`用于数据库...
本笔记将探讨Spring Boot中的日志管理,特别是如何使用Slf4j进行日志记录,并简要介绍门面模式在系统架构中的应用。 1. **Spring Boot 日志框架:** Spring Boot默认集成了多种日志框架,如Logback、Log4j2等,但...
- **下载日志库**:下载并解压slf4j1.5.2.zip,获取slf4j-api-1.5.2.jar与slf4j-log4j12-1.5.2.jar。 - **安装Log4j**:确保已安装log4j-1.2.14.jar。 - **工程配置**:创建Java项目,并配置log4j.properties文件...
本压缩包文件"USB+FPC连接器封装.zip"包含了多种类型的USB和FPC(柔性扁平电缆)连接器的封装,这对于电子工程师进行硬件设计时非常有帮助。下面将详细介绍其中涉及的知识点。 首先,AD(Altium Designer)是业界...
Java的Exception类和logging框架如Log4j或SLF4J可以帮助开发者追踪和解决运行时问题。 【单元测试与集成测试】 良好的源码应该包含全面的测试用例,以确保代码质量。JUnit是Java中常用的单元测试框架,而Mockito则...
4. 封装出错,但提示成功 由于出错时您没有按ESC退出,Newprep忽略了错误继续运行, 并对系统电源进行了更改,这样,如果再次封装可能会死机。 如出现错误,请按ESC退出,您还可以重来,否则就得重新做系统了。 5...
Apache是常见的开源软件项目,其产品如Tomcat(Java EE应用服务器)、HttpClient(网络通信库)、Log4j(日志框架)等在Java开发中广泛应用。笔记可能会介绍如何集成和使用这些工具。 总结,【Java狂神说笔记】是一...
#### 第九章:集合框架 Java集合框架提供了实现特定数据结构的接口和类。 **Set接口**:不允许重复元素。 **List接口**:有序且允许重复元素。 **Map接口**:存储键值对映射关系。 **Set接口** - **HashSet**:...
4. pmon代码执行流程:start.S是pmon执行的第一段代码,它的核心功能是将pmon的二进制文件复制到内存中。接着它初始化cache、内存控制器、内存和南桥的一些信号线。在内存控制器初始化后,pmon的代码被载入内存中...
- 导入log4j日志包。 2. **创建数据库和表**: - 数据库:`crm` - 表:`cst_customer` 3. **创建Java实体类**。 4. **编写映射文件**(ORM元数据): - 映射文件与实体类放在同一包下,文件名为实体类名加`....
log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` **6. 属性文件SqlMap.properties** 示例: ```...
这篇读书笔记主要聚焦在第三部分,这部分通常涵盖了更高级的主题,如对象、原型、闭包以及模块化等。结合提供的"listutil.js"文件,我们可以深入探讨JavaScript中的实用工具函数和编程技巧。 首先,JavaScript的...