org.slf4j.LoggerFactory could not be successfully initialized

本文详细介绍了如何解决Log4j与SLF4J版本不匹配导致的错误,通过调整依赖库的版本,确保Log4j、slf4j-log4j12和slf4j-api版本一致,避免运行时出现的日志框架冲突问题。
部署运行你感兴趣的模型镜像

报错原因:

log4j-版本 、slf4j-log4j12-版本、slf4j-api-版本, 三个jar包都有,但是版本不匹配导致的.

查看合适的对应版本

slf4j-log4j12-、slf4j-api- 版本一般是一致的.访问maven仓库网站,搜索slf4j-log4j12
https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12
选择想使用的版本,本示例选的1.7.25
https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12/1.7.25
查看页面下面,绿框处是展示的1.7.25版本适配依赖的其他jar包和版本.编译依赖2个[Compile Dependencies (2)],测试依赖1个[Provided Dependencies (1)]
可以点击version 列下的1.2.17直接访问对应的依赖jar的页面,找到对应的maven配置内容.后面Update表示这个jar包的最新正式版本是多少.

在这里插入图片描述

复制各个jar包依赖dependency配置内容.修改如下,问题解决了.

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

下面的代码是这个接口吗?解释一下下列代码所用到的技术以及用法 package com.zingsemi.web.controller.mes; import com.miracom.TRSNode.TRSNode; import com.zingsemi.common.core.domain.AjaxResult; import com.zingsemi.system.service.mes.ICharDataAccpetorService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.regex.Pattern; @RestController @RequestMapping("/mes/chardataacceptor") public class CharDataAcceptorController { @Autowired private ICharDataAccpetorService dataService; private static final Logger log = LoggerFactory.getLogger(CharDataAcceptorController.class); @PostMapping("aceeptdata") // @Log(title = "王洵的数据", businessType = BusinessType.INSERT) public AjaxResult AcceptCharData(String data) { try { log.info(data); String nodeStr_foematted = Pattern.compile("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").matcher(Pattern.compile(">\\s+<").matcher((Pattern.compile("\n").matcher(data).replaceAll(""))).replaceAll("><")).replaceAll(""); TRSNode in_node = new TRSNode("Request Message"); in_node.parse(nodeStr_foematted); TRSNode out_node = dataService.AcceptCharData(in_node); AjaxResult ajax = AjaxResult.success(); ajax.put("data", out_node.toXMLString()); return ajax; } catch (Exception ex) { log.error(ex.getMessage()+"xml:["+data+"]"); AjaxResult ajax = AjaxResult.error(); ajax.put("data", ex.getMessage()); return ajax; } } }
最新发布
09-18
帮我设计一个请求池、用于管理同一域名下的不同请求。 比如 域名 open.feishu.cn 1. 自建应用获取 tenant_access_token POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal JSON请求体 2. 获取通讯录授权范围 GET https://open.feishu.cn/open-apis/contact/v3/scopes 3. 整个请求池内比如说获取token其实是其他接口的前置条件,看看如何让其他的能够实现共用(除了访问令牌,访问令牌本身还能够拿到他的过期时间单位为秒,比如7200,所以需要在过期时间前10秒钟内获取到新的访问令牌,另外获取访问令牌这个接口不受限流管理,但是受重试机制管理) 4. 尽量写到一个java类中去,不要单独定义类。可以内嵌class,方法什么的尽量为static 5. 整个池子如果超过5秒钟没有任务就停止掉,不然会一直卡着啥的 6. 如果有定义实体使用lombok的@Data和@Builder注解 上面12是示例的接口,实际接口远远不止。 我的想法是通过搞一个请求池,能有源源不断的请求加入并且被异步处理,并且将请求的结果放回响应池。类似于golang的channel通道通信。 这个池子要支持重试(检查返回的响应头是否包含指定参数、检查返回的响应体是否包含指定的状态码code字段)、支持限流处理,限流和重试一样,会有响应头,响应体状态等情况,一旦限流被触发同一池子内的请求均需暂停等待限流结束再发起。 整个池子还需要支持自定义池大小、一分钟内最多请求1000次的设置、一秒钟最多50次的设置、请求域名批量替换、请求地址批量修改、是否debug(如果开启就在控制台输出请求体和响应体) 整块请求的地方使用Hutool的HttpUtil工具实现。 我需要你给的代码逻辑完整,能够直接运行,并且整个需求和功能都需要满足。我是jdk8,并且代码中不要出现Thread.sleep这种代码去控制时间啥的。代码中注释需要完整,并且日志输入也要使用中文。 日志使用 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public static final Logger logger = LoggerFactory.getLogger(RequestPool.class); 输出。 在增加域名替换和参数补全的方法 // 替换域名和参数补全 private static String replaceAndParamPaddingUrl(String url) { for (Map.Entry<String, String> entry : domainReplaceMap.entrySet()) { url = url.replace(entry.getKey(), entry.getValue()); } url = HttpUtil.urlWithForm(url, urlParamPaddingMap, StandardCharsets.UTF_8, false); return url; } // 设置域名替换规则 public static void setDomainReplaceMap(Map<String, String> domainReplaceMap) { RequestPool.domainReplaceMap.putAll(domainReplaceMap); } 调用方法为: // 域名替换 setDomainReplaceMap(new HashMap<String, String>() {{ put("https://open.feishu.cn/", "http://10.108.29.235/"); }}); // 参数补全 setUrlParamPaddingMap(new HashMap<String, String>() {{ put("user_id_type", "user_id"); put("department_id_type", "department_id"); put("member_id_type", "user_id"); put("member_type", "user"); put("client_token", IdUtil.fastUUID()); }}); 要冲锋考虑好并发情况下的各个参数,要确保万无一失。 切记,要考虑你自己的模型回答字数限制,在确保答案能一个回答回复完的前提下,给出最佳的结果。
04-02
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值