面试题答案
一键面试1. 配置log4j.properties文件
- 定义日志输出目的地及格式
log4j.rootLogger=error,stdout # 定义输出到控制台的Appender log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # 自定义日志格式,包含时间、线程名、日志级别、异常信息 log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{1} - %m%n
- 对于文件输出的配置(如果需要)
# 定义输出到文件的Appender log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=logs/error.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{1} - %m%n
2. 在Java代码中进行异常日志记录
- 获取Logger实例
import org.apache.log4j.Logger; public class YourClass { private static final Logger logger = Logger.getLogger(YourClass.class); public void someMethod() { try { // 可能抛出异常的代码 int result = 10 / 0; } catch (Exception e) { // 记录异常日志 logger.error("发生异常", e); } } }
在高并发场景下,log4j
的PatternLayout
已经经过优化,并且通过异步日志(如AsyncAppender
)可以进一步提升性能。例如:
- 配置异步Appender
log4j.rootLogger=error,async log4j.appender.async=org.apache.log4j.AsyncAppender log4j.appender.async.additivity=false log4j.appender.async.appender=stdout
这样,日志记录操作将在后台线程中执行,减少对高并发业务线程的影响。