IDEA中使用自定义的配置文件.properties的路径写法

1,将xxx.properties和导入此文件的代码放在同一个包下,比如
这里写图片描述
我在BbPoolConnection这个类中需要导入jdbc.properties文件,
代码如下:

webRootPath = DbPoolConnection.class.getClassLoader().getResource("com/bdkj/badaokeji/utils/jdbc.properties").getPath();

com/bdkj/badaokeji/utils/jdbc.properties是相对路径,原因:使用.getClass().getClassLoader().getResource(String name)函数时,name参数则只能使用相对于class loader目录的路径,即相对路径。
IDEA中,在jdbc.properties上右键有生成相对路径的快捷方式。
如下:
这里写图片描述

2,在项目下新建一个文件夹,命名为xx,(当然一般命名为resources,方便辨认)然后在Project Structure->Modules->Sources中把这个文件设置为Resources,意思是这个文件是项目的资源文件夹,当项目需要导入文件时,就会从这个文件夹下去找
这里写图片描述
这个文件夹下的配置文件的相对路径就是自己的名字,需要引入resources文件夹在的jdbc.properties,上面那段代码变成

webRootPath = DbPoolConnection.class.getClassLoader().getResource("jdbc.properties").getPath();
<think>嗯,用户这次明确要求一个针对IntelliJIDEA2017的log4j配置教程。用户提到站内引用内容,但根据对话历史,用户核心需求是分步骤的配置指南。用户可能遇到的主要痛点:新手面对日志框架组合(SLF4J+Log4j2)的配置复杂性。用户引用的[1][2]提到版本号(IDEA2017.2.5,log4j22.8.2)和关键配置项(<Loggername="MainLogger">),说明需要版本适配指导。需要注意三个技术要点:第一是SLF4J作为门面模式的使用原理,用户引用[1]特别强调"slf4j是接口,log4j2是实现";第二是XML配置模板的有效性,需要规避过时教程问题;第三是Debug验证手段,用户引用[3]提到Debug追踪,需在步骤中包含验证环节。用户引用的第2篇提到Controller中获取Logger的写法(@ControllerpublicclassMainController),暗示用户可能在Spring项目中使用。但用户没明确框架环境,教程应保持通用性,仅在"注意事项"中补充Spring特例。配置步骤的关键路径是:创建Maven项目→添加依赖(pom.xml)→创建log4j2.xml→验证配置。其中依赖项要特别注意log4j-slf4j-impl桥接包的版本匹配,用户引用[1]提到slf4j1.7.25和log4j22.8.2的组合。可能存在的配置坑点:1.IDEA2017默认使用Log4j1.x的旧项目模板2.配置文件放错位置(resources非target目录)3.忘记添加桥接包导致SLF4J绑定失败。这些都要在教程中预警。用户似乎更关注实操而非理论,因此省略SLF4J原理详解,但需要在"核心概念"段落简要说明门面模式的价值——这正是用户引用[1]首句的疑问点。</think> 以下是根据**IntelliJ IDEA 2017**环境,整合**SLF4J + Log4j2**的详细分步教程(基于引用[1][2]的核心信息优化): --- ### 📝 Step-by-Step 配置流程 #### 1. 创建Maven项目 - 打开IDEA 2017 → `File → New → Project` → 选择**Maven** → 设置项目名 → 完成。 #### 2. 添加依赖(`pom.xml`) ```xml <dependencies> <!-- SLF4J 接口 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <!-- Log4j2 核心 + SLF4J桥接 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.8.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.8.2</version> </dependency> </dependencies> ``` > ✅ **关键**:`log4j-slf4j-impl` 是SLF4J与Log4j2的桥接包,无此包日志无法输出[^1]。 --- #### 3. 创建Log4j2配置文件 (`log4j2.xml`) 在 `src/main/resources` 目录下新建文件 `log4j2.xml` ⬇️ ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 控制台输出 --> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <!-- 自定义Logger(示例中命名为"MainLogger") --> <Logger name="com.example.MainController" level="debug" additivity="false"> <AppenderRef ref="ConsoleAppender"/> </Logger> <!-- 根Logger --> <Root level="error"> <AppenderRef ref="ConsoleAppender"/> </Root> </Loggers> </Configuration> ``` > 🔍 **注**:`name="com.example.MainController"` 需与代码中的Logger名称匹配[^2]。 --- #### 4. 在Java代码中调用日志 ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Controller public class MainController { // 获取Logger(名称需与log4j2.xml中定义的Logger匹配) private static final Logger logger = LoggerFactory.getLogger("com.example.MainController"); public void demo() { logger.debug("Debug信息测试"); // 仅当配置level="debug"时输出 logger.error("错误信息测试"); // 始终输出(因Root level="error") } } ``` --- #### 5. 验证配置 1. 运行项目,观察IDEA控制台输出(参考引用[3]的Debug流程) 2. 若未输出日志: - 检查`log4j2.xml`是否在`src/main/resources`目录 - 检查`pom.xml`依赖版本是否冲突 - 在代码中添加`System.setProperty("log4j2.debug", "true");` 查看Log4j2内部错误 --- ### ⚠️ 常见问题解决 | 问题现象 | 解决方案 | |-------------------------|------------------------------| | **日志无输出** | 确认`log4j-slf4j-impl`依赖存在 | | **配置文件未加载** | 检查文件是否在`resources`目录 | | **SLF4J绑定多个实现** | 用IDEA的Maven依赖分析工具排查冲突 | | **旧版Log4j残留** | 删除项目中的`log4j.properties` | > 💡 **提示**:IDEA 2017 需手动刷新Maven依赖(右键项目 → Maven → Reimport) --- ### 📚 核心概念梳理 ```mermaid graph LR A[SLF4J 日志接口] --> B[Log4j2 实现框架] B --> C[log4j-slf4j-impl 桥接包] C --> D[日志输出到控制台/文件] ``` > 框架关系:**SLF4J提供标准API** → **Log4j2实现具体功能** → **桥接包连通两者**[^1] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值