Log4j是什么?
Log4j就像程序的“黑匣子”,专门用来记录软件运行时的各种信息,比如哪里报错、性能如何、用户操作轨迹等。它是Java领域最常用的日志框架之一,可以灵活控制日志内容、输出位置(控制台、文件、数据库等)和格式,还能根据需求调整日志的详细程度。
假设你开发了一个电商App,用户下单失败时,用Log4j可以自动记录“用户ID、下单时间、错误原因”等信息,存到指定文件中,而不是只在控制台一闪而过。这样后续排查问题就像看录像回放一样方便。
Log4j有什么用?
- 核心功能
分级记录:
日志分不同级别(DEBUG、INFO、WARN、ERROR等)。比如开发时用DEBUG级别看详细流程,上线后用ERROR级别只记录严重问题,避免日志过多。
灵活输出:
可同时将日志输出到多个地方,比如控制台(调试用)、文件(长期保存)、数据库(数据分析用),甚至通过邮件报警。
性能优化:
日志记录过程高效,几乎不影响程序运行速度,适合高并发场景 。 - 实际场景
调试代码:快速定位报错位置,比如空指针异常的具体行号。
监控系统健康:统计接口响应时间,发现性能瓶颈。
安全审计:记录用户敏感操作(如删除数据),便于追溯责任。
业务分析:统计用户行为数据(如点击量),辅助运营决策。
Log4j怎么用?三步走:加依赖→写配置→调代码
- 安装依赖(以Maven项目为例)
在pom.xml里添加:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
- 配置文件(定规则)
在src/main/resources下创建log4j.properties,示例:
# 根日志:INFO级别,输出到控制台和文件
log4j.rootLogger=INFO, console, file
# 控制台配置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n
# 文件配置(每天生成新文件)
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/app.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c{1}:%L - %m%n
- 代码调用
在Java类中:
import org.apache.log4j.Logger;
public class OrderService {
private static final Logger logger = Logger.getLogger(OrderService.class);
public void createOrder() {
try {
logger.info("用户下单开始,用户ID:1001");
// 业务逻辑
logger.debug("库存检查通过,商品ID:888");
} catch (Exception e) {
logger.error("下单失败!错误原因:" + e.getMessage(), e);
}
}
}
四、注意事项
别用System.out:
System.out会降低性能且无法分级控制,用Log4j更专业。
敏感信息加密:
日志中别记录用户密码、银行卡号等敏感数据。
定期清理日志:
配置日志滚动策略(如按天或按大小分割),避免硬盘被占满 。
生产环境降级:
上线后关闭DEBUG日志,减少I/O压力 。