目录标题
[Q&A] 为什么需要日志?
问题诊断与调试 通过查看错误发生前后的日志,可以追踪到问题的根源。
性能分析与优化 日志记录如响应时间、CPU使用率、内存消耗等,通过分析有助于发现性能瓶颈。
监控与告警 实时的日志分析,并触发告警通知相关人员进行处理,预防故障的发生。
审计跟踪 日志用于记录用户的操作行为,实现系统的可追溯性和审计需求。
合规要求 金融、医疗行业等,法律可能要求对特定操作进行详细记录,以满足合规监管要求。
业务数据收集分析 收集用户行为数据、产品使用情况等业务相关信息,指导产品的迭代优化和业务决策。
系统恢复与容错 数据库和其他持久化存储系统的事务日志用于在系统崩溃后进行恢复,确保数据的一致性和完整性。
[Q&A] 什么是Log4j?
Log4j是一个广泛使用的Java日志框架,由Apache软件基金会开发并维护。
[Q&A] 为啥叫Log4j?
Log4j名字来由log for java
[Q&A] Log4j主要特点有哪些?
可配置性: 控制日志信息的输出格式、级别、以及目的地,无需修改代码即可调整日志行为,这一切都是通过配置文件来实现的。
日志分级: Log4j支持多个级别的日志输出。比如DEBUG、INFO、WARN、ERROR输出到不同位置
支持过滤: 可以通过过滤器对日志事件进行进一步筛选,决定哪些事件应被记录或忽略。比如仅仅记录WARN、ERROR日志
定制loger: 把特殊代码日志输出到执行位置
性能优化: Log4j采用了高效的异步日志记录机制,在高并发场景下能够有效减少日志操作对应用性能的影响。
Log4j使用步骤
1.・引入依赖
<!-- log4j 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.・在 src
下新建 log4j.properties
路径和名称都不允许改变
log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n %C %d %L%n
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/myLog.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=- %m%n %C %d %L%n
log4j 输出级别
log4j.rootCategory=DEBUG
log4j 输出位置
log4j.rootCategory= CONSOLE, LOGFILE
CONSOLE:控制台 ,LOGFILE:文件
如何控制某个局部内容的日志级别?
第1步:先在总体级别调成INFO,保证不输出无用信息
第2步:在设置某个指定位置级别为DEBUG
log4j.rootCategory=INFO, CONSOLE,LOGFILE
log4j.logger.com = DEBUG 包级别
log4j.logger.com.mapper = DEBUG 类级别
log4j.logger.com.mapper.selByPage = DEBUG 方法级别
3・代码里记录日志
Logger logger = Logger.getLogger(Test.class);
logger.debug("这是一个调试信息");
logger.info("这是一个info信息");
logger.info(log.getAccOut() + "给" + log.getAccIn() + "在" + new Date().toLocaleString() + "转了"+ log.getMoney());
因为安全漏洞问题,Apache Log4j 1.x 已不再维护,推荐用户升级至 Apache Log4j 2.x 版本,该版本进行了重构,增强了性能,并修复了若干重大安全问题。