在log4j中,可以使用MDC(Mapped Diagnostic Context)來實現按用戶輸出日志文件。MDC是一個線程級的變量,可以用于存儲和訪問線程的上下文信息。
以下是按用戶輸出日志文件的步驟:
<appender name="userFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/user.log" />
<!-- 其他配置參數 -->
</appender>
<logger name="com.example">
<level value="DEBUG" />
<appender-ref ref="userFileAppender" />
</logger>
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
public class ExampleClass {
private static final Logger logger = Logger.getLogger(ExampleClass.class);
public void doSomething(String user) {
MDC.put("user", user);
logger.debug("User action");
// 其他業務邏輯
MDC.remove("user");
}
}
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %X{user} %p %c - %m%n" />
</layout>
這樣,當調用doSomething
方法時,會將當前用戶信息存儲到MDC中,然后在日志輸出時,會將用戶信息輸出到日志文件中。