You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SLF4J获取log4j.xml中配置的两个不同Appender的日志记录器?

用SLF4J获取log4j.xml中配置的多个Logger

没问题,这事儿其实挺简单的,SLF4J 获取 Logger 的逻辑和你在 log4j.xml 里的配置是一一对应的,我给你一步步讲清楚:

第一步:先明确log4j.xml里的Logger标识

你在log4j.xml里配置的每个<logger>标签,它的name属性就是这个Logger的唯一标识,SLF4J就是靠这个标识来找到对应的Logger实例的。举个常见的配置例子:

<!-- 第一个Logger:对应业务服务层,绑定文件输出Appender -->
<logger name="com.myapp.service" additivity="false">
    <appender-ref ref="ServiceFileAppender"/>
</logger>

<!-- 第二个Logger:对应数据访问层,绑定控制台输出Appender -->
<logger name="com.myapp.dao" additivity="false">
    <appender-ref ref="DaoConsoleAppender"/>
</logger>

这里的com.myapp.service和com.myapp.dao就是两个Logger的核心标识。

第二步:用SLF4J获取对应的Logger

有两种常用方式,按需选择:

方式一:通过类对象获取(推荐)

如果你的Logger配置的是包名或者类名,直接用类对象作为参数获取Logger就行——这种方式IDE能自动重构,不容易写错名称。
比如在你的Service类里:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class UserService {
    // 自动匹配到log4j.xml里的"com.myapp.service" Logger
    private static final Logger logger = LoggerFactory.getLogger(UserService.class);
    
    public void handleUserRequest() {
        logger.info("用户请求处理完成"); // 这条日志会输出到ServiceFileAppender指定的文件
    }
}

同理,在Dao类里:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class UserDao {
    // 自动匹配到log4j.xml里的"com.myapp.dao" Logger
    private static final Logger logger = LoggerFactory.getLogger(UserDao.class);
    
    public void queryUserInfo() {
        logger.debug("查询用户信息SQL执行完成"); // 这条日志会输出到DaoConsoleAppender指定的控制台
    }
}

SLF4J会根据类的全限定名(比如com.myapp.service.UserService)去匹配最接近的Logger配置(这里就是com.myapp.service)。

方式二:直接通过名称字符串获取

如果你的Logger配置的是自定义名称(比如不是包/类名,比如叫paymentLogger),直接传这个名称字符串就行:

// 假设log4j.xml里有<logger name="paymentLogger" ...>
private static final Logger paymentLogger = LoggerFactory.getLogger("paymentLogger");

这种方式适合那些不属于某个类/包的独立Logger配置。

小提醒

记得确保你获取Logger时用的标识(类的全限定名或者字符串)和log4j.xml里的name属性完全匹配,或者类属于该Logger的名称空间(比如子类继承父包的Logger配置),这样日志才会按照你配置的Appender输出哦。

内容的提问来源于stack exchange,提问作者Akim Akimov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:46:27