处理Sprint Boot与Storm1.2.2日志实现的冲突,使用logback记录日志

马克思主义基本原理 2023版:10个核心概念辨析与3类常见考题解析 本文深入解析马克思主义基本原理2023版中的10组核心概念,包括物质与意识、量变与质变等,并提供简答、论述、辨析三类题型的实战答题策略。通过对比分析和结构化框架,帮助考生掌握哲学概念的本质差异和应试技巧,提升备考效率。 阅读详情

通过mvn dependency:tree可以看到Sprint Boot Starter和Storm引入的日志记录框架不相同的,如下:

Spring Boot Starter引入的日志组件是log4j-to-slf4j:

+- org.springframework.boot:spring-boot-starter:jar:2.0.4.RELEASE:compile
|  +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.4.RELEASE:compile
|  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile

Storm1.2.2引入的日志组件是log4j-slf4j-impl:

+- org.apache.storm:storm-core:jar:1.2.2:compile
|  +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.10.0:compile

两个放一起就会冲突,默认两个都引入了,就会报如下错误“No matching field found: getConfiguration for class org.apache.logging.slf4j.SLF4JLoggerContext”:

java.lang.IllegalArgumentException: No matching field found: getConfiguration for class org.apache.logging.slf4j.SLF4JLoggerContext
	at clojure.lang.Reflector.getInstanceField(Reflector.java:271)
	at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:315)
	at org.apache.storm.daemon.worker$get_logger_levels.invoke(worker.clj:500)
	at org.apache.storm.daemon.worker$fn__11300$exec_fn__2470__auto__$reify__11302.run(worker.clj:759)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.storm.daemon.worker$fn__11300$exec_fn__2470__auto____11301.invoke(worker.clj:633)
	at clojure.lang.AFn.applyToHelper(AFn.java:178)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invoke(core.clj:630)
	at org.apache.storm.daemon.worker$fn__11300$mk_worker__11391.doInvoke(worker.clj:605)
	at clojure.lang.RestFn.invoke(RestFn.java:512)
	at clojure.lang.Var.invoke(Var.java:409)
	at org.apache.storm.daemon.supervisor.LocalContainer.launch(LocalContainer.java:61)
	at org.apache.storm.daemon.supervisor.LocalContainerLauncher.launchContainer(LocalContainerLauncher.java:45)
	at org.apache.storm.daemon.supervisor.Slot.handleWaitingForBlobLocalization(Slot.java:387)
	at org.apache.storm.daemon.supervisor.Slot.stateMachineStep(Slot.java:275)
	at org.apache.storm.daemon.supervisor.Slot.run(Slot.java:752)
18:05:35.529 [SLOT_1027] ERROR org.apache.storm.util - Halting process: ("Error on initialization")
java.lang.RuntimeException: ("Error on initialization")
	at org.apache.storm.util$exit_process_BANG_.doInvoke(util.clj:341)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at org.apache.storm.daemon.worker$fn__11300$mk_worker__11391.doInvoke(worker.clj:605)
	at clojure.lang.RestFn.invoke(RestFn.java:512)
	at clojure.lang.Var.invoke(Var.java:409)
	at org.apache.storm.daemon.supervisor.LocalContainer.launch(LocalContainer.java:61)
	at org.apache.storm.daemon.supervisor.LocalContainerLauncher.launchContainer(LocalContainerLauncher.java:45)
	at org.apache.storm.daemon.supervisor.Slot.handleWaitingForBlobLocalization(Slot.java:387)
	at org.apache.storm.daemon.supervisor.Slot.stateMachineStep(Slot.java:275)
	at org.apache.storm.daemon.supervisor.Slot.run(Slot.java:752)

为了解决这种冲突,此时的解决方案是去掉spring boot中的默认日志组件的引入:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-to-slf4j</artifactId>
		</exclusion>
	</exclusions>
</dependency>

此时在代码中通过如下引入slf4j记录日志:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
protected final Logger logger = LoggerFactory.getLogger(this.getClass());

application.properties中增加如下内容:

logging.config=classpath:logback.xml

另外当然别忘了在classpath下增加logback.xml的配置文件了,示例内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="30 seconds" packagingData="true">
    <!-- 设置 logger context 名称,一旦设置不可改变,默认为default -->
    <contextName>StreamProcessor</contextName>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <!-- 当前活动日志文件名 -->
        <file>./my_log.log</file>
        <!-- 文件滚动策略根据%d{patter}中的“patter”而定,此处为每天产生一个文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 归档文件名“.zip或.gz结尾”,表示归档文件自动压缩 -->
            <FileNamePattern>./my_log%d{yyyyMMdd}.log.zip</FileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>        

        <encoder>
          <pattern>%d{HH:mm:ss.SSS}[%-5level][%thread]%logger{36} - %msg%n</pattern>         
        </encoder>
    </appender>
    
    <!-- 日志级别若没显示定义,则继承最近的父logger(该logger需显示定义level,直到rootLogger)的日志级别-->
    <!-- logger的appender默认具有累加性(默认日志输出到当前logger的appender和所有祖先logger的appender中),可通过配置 “additivity”属性修改默认行为-->
    <logger name="org.apache.storm"  level="INFO" additivity="false" >
    	<appender-ref ref="STDOUT" />
    </logger>
    <logger name="org.springframework.web"  level="INFO" additivity="false" >
    	<appender-ref ref="STDOUT" />
    </logger>

    <!-- 至多只能配置一个root -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

这样就搞定了

log4j-to-slf4j-2.10.0.jar Log4j 2 API和SLF4J之间的Apache Log4j绑定。 org.apache.logging.log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0.jar 立即下载

相关推荐

GEE进行Theil-Sen Median斜率估计和Mann-Kendall检验

Python实现Theil-Sen Median斜率估计和Mann-Kendall检验// 定义时间范围//NDVI图像集合// 定义每年的开始和结束日期// 加载NDVI数据集,按日期过滤,并计算最大值.max()}));// 计算Sen斜率并剪裁// 可视化Sen斜率Map.addLayer(senSlope.select('slope'), vis, "Sen斜率 ");// MK检验// 创建一个列表,包含年度NDVI图像的list。

qq_44894692的博客 965

Storm1.1.0<控制台输出指定Log信息>

写storm的时候,有的时候控制台会输出很多很多的“INFO”信息,造成自己写的System.out.println之类的信息会被冲刷掉,做接下来的配置能够有效地输出指定Log信息。参考:https://logging.apache.org/log4j/2.x/manual/configuration.html在classpath下新建一个log4j2.xml文件,里面填充一下内容:<?xml ve

Gpwner的博客 3371

基于STM32的坐姿矫正与久坐提醒系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6主控,搭配MPU6050六轴姿态传感器、HC-SR04超声波测距模块,完整实现了坐姿矫正与久坐提醒系统的全流程开发,从多传感器数据采集、数字滤波、姿态解算、坐姿判断到多模式提醒,全流程无跳步保姆式拆解,配套逐行注释可直接编译的开源代码,新手跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 437

storm日志级别配置,输出debug日志

最近写了app放到storm上跑,搜了好些都是改代码的,这个亲测好用。 转自:https://blog.csdn.net/ynp507/article/details/84756394 storm 打印debug日志 storm采用了slf4j+logback方式,storm根路径下有个logback文件夹,下面有cluster.xml ,对storm日志的配置。 想要输出debug模式的数据,修改Supervisors 下cluster.xml文件即可, <root level="DEBUG"&

馒 的技术空间 911

白话详细解读(七)----- CBAM:Convolutional Block Attention Module

一、CBAM简介 论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CB CBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络而设计的注意力模块,传统的卷积存在只关注局部信息,而往往忽略全局信息的弊端,以3*3卷积为例,滤波器有9个

奋斗の博客 1万+

在 Mac OS 上编译 WebRTC 教程

在 Mac OS 上编译 WebRTC 教程

iShare_Carlos的博客 1248

Storm实战常见问题及解决方案

该文档为实实在在的原创文档,转载请注明: http://blog.sina.com.cn/s/blog_8c243ea30101k0k1.html 类型 详细 备注 该文档是群里几个朋友在storm实战中遇到的一些问题,及其对应解决办法。     相关描述 ²  其他相关文档请参考新浪博客http://blo

xiaolang85的专栏 6万+

防雷防浪涌电路设计

通信线路或者电源线路通常会铺设到户外,一旦线路铺到户外后,就需要考虑防雷的问题了,那么怎么设计保护电路,能够防止雷电等浪涌对电路的破坏呢?

manhuami2007的博客 1万+

基于Storm的工程中使用log4j

  最近使用Storm开发,发现log4j死活打不出debug级别的日志,网上搜到的关于log4j配置的方法都试过了,均无效。   最终发现问题是这样的:最新的storm使用的日志系统已经从log4j切换到了slf4j+logback。那么使用log4j的旧代码怎么办呢?为了避免对这些代码作任何修改,slf4j提供了桥接工具:log4j-over-slf4j,提供与log4j完全相同的类名和接口...

weixin_30293135的博客 252

鸿蒙手机卸载内置应用 adb连接

**傻瓜式删除鸿蒙系统内置应用,自己亲测有效。**

JJDXBT的博客 3万+

45.qt quick-qml虚拟软键盘详解(一)

1.qml虚拟键盘介绍 Qt虚拟键盘的主要功能包括: 可定制的键盘布局和风格与动态切换。 带有单词选择的预测性文本输入。 角色预览和替代角色视图。 自动大小写和空格插入。 不同分辨率的可伸缩性。 支持不同的字符集(拉丁,简体/繁体中文,印地语,日语,阿拉伯语,希伯来语,韩语和其他)。 支持大多数常见的输入语言,可以轻松扩展语言支持。 从左到右和从右到左的输入。 硬件键支持2路和5路导航。 手写支持,带有全屏输入的手势。 音频反馈。 跨平台功能。 支持多国语言,高达40多个语言 本

抵抗时间扭曲,坚持做一件有意义的事 3559

springboot中storm日志打印不了 getConfiguration for class org.apache.logging.slf4j.SLF4JLoggerContext

java中springboot使用storm,日志打印不出来。恶心了一整天。多谢Harries Blog™ 链接:http://ju.outofmemory.cn/entry/368002 错误: 为了解决这种冲突,此时的解决方案是去掉spring boot中的默认日志组件的引入: &lt;!--注意排除掉的是log4j-to-slf4j包!!!!!--&gt; &lt;depend...

qq_36862445的博客 8455

高速电路设计必看:同步开关噪声问题解析

数字电路中的同步开关噪声(SSN)问题日益突出,尤其是随着高速器件应用增多。本文分析了地弹和电压弹的产生机理,指出其与电源网络电感、输出驱动电流变化率密切相关。文章详细阐述了地弹参数特征,包括峰值电压、脉冲宽度等关键指标,并探讨了负载电容、信号压摆率等因素对地弹的影响。最后提出系统化的解决方案,涵盖芯片选型、电路设计、PCB布局和后期调试等多个环节,强调通过降低回路电感和控制电流变化率来有效抑制SSN。这些措施需要在性能、成本和复杂度之间取得平衡,为高速数字电路设计提供了重要参考。

一只豌豆象的博客 296

storm启动后不打印日志,提交Topology后也不打印日志

今天遇到个问题,启动Storm集群后,logs目录下没有任何日志,提交topology任务后,任务能够正常运行,但是还是没有任何worker日志。以为是配置错了。。疯狂的找配置对比。。。发现配置没问题。。。    最后看了一下,发现是因为我copy过来的这个storm安装目录下有以前的一个测试topology的jar包。。。。然后storm启动的时候把这些包一起当做lib一起加载了。然后就造成了

BrotherDong90的专栏 8015

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Storm中log4j日志打印不出来的解决办法

使用storm命令启动JAVA进程的时候,发现log4j日志打印不出来,咋办呢? 解决办法如下(亲测): 删除strom/lib目录下的log4j-over-slf4j-1.6.6.jar strom/lib目录下添加slf4j-log4j12-1.6.1.jar 重新启动TOPO就可以了 转载于:https://www.cnblogs.com/dragkiss/p/7069464.htm...

weixin_30254435的博客 516

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

处理Storm1.2.2 日志报错 与spring boot冲突

https://blog.csdn.net/fenglibing/article/details/82261123 通过mvn dependency:tree可以看到Sprint Boot Starter和Storm引入的日志记录框架不相同的,如下: Spring Boot Starter引入的日志组件是log4j-to-slf4j: +- org.springframework.b...

heasy's blog 713

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Springboot工程logback和log4j冲突问题的解决。

背景 刚入职,最近搭建一个工程。搭建过程需要引入公司已经封装好的一些jar包。引入jar后启动就会报错。报错信息如下 Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.inv...

LIUHUA121的博客 6242

Slf4j + Log4j2 + Mongodb 日志收集

slf4j + Log4j2 + mongodb springboot 日志收集 添加项目依赖 项目是基于 springboot 2.0+进行的, 在低版本没有测试过 pom.xml slf4j log4j依赖添加 <!-- log out --> <dependency> <groupId>org.slf4j&...

u011420410的博客 1055

ClassNotFoundException: org.slf4j.Logger报错问题

ClassNotFoundException: org.slf4j.Logger报错解决1.jar包没有导入2.检查idea编译器 1.jar包没有导入 检查一下jar包是否添加到依赖(这一部分是检查pom.xml这个文件),看看是否有依赖缺失。 2.检查idea编译器 因为楼主是基于idea进行编程的,想尝试用aop解决日志问题。但是一个晚上都报错。 1.我首先排查了依赖,发现并已经导入了;但是我启动仍然报错 2.检查idea中Artifacts中的依赖 我是在这里出现问题的;我删掉了之前的war包,

a760352276的博客 6865

logback学习与使用(一)

今天在整分布式系统的统一日志shu

羊群里跑个驴写字的地方 576

Log4j 2 与SLF4J 整合 maven 依赖

标题 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupI

qq_38163561的博客 1479

【strom】[ERROR] Error on initialization of server mk-supervisor

问题描述: 2018-05-14 17:27:50.704 o.a.s.d.supervisor [ERROR] Error on initialization of server mk-supervisor java.io.FileNotFoundException: File ‘/hadoop/storm/supervisor/stormdist/WarningSimilar-8-15...

寻找手艺人的专栏 1937

本地安装Zookeeper&Storm

写在前面:旁边的大佬曾说让我看看storm,因为统计一个东西的时候啥都不知道,最近终于开始看了,所以记录下。 看的是这边文章指路大佬的页面→虚无境的博客-Storm 入门的Demo教程 前面是一些名词解释,想把一些集群安装了,上面的文章里也有,但是没搞好。找了其他的文章来弄好的 1先装的zookeeper 看的是这个→Zookeeper本地安装配置(入门) 2安装storm→win...

bug的abc 348

开发遇到的问题

NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/se...

u010248374的专栏 4411

Spring使用SLF4J代替Commons Logging写日志

项目的日志更换成slf4j和logback后,发现项目无法启动。错误提示java.lang.ClassNotFoundException: org.apache.commons.logging.Log,如图所示。原因是Spring默认使用commons logging写日志,需要桥接工具把日志输入重定向到slf4j。在项目中添加commons logging到slf4j的桥接器jcl-over-sl

达拉斯母牛 1万+

Spring Boot 2.0下配置Log4j2下的错误问题分析与解决

环境介绍 Spring Boot 2.0.2 Java 8 任务描述 由于Spring Boot 2.0 默认情况下是使用logback作为日志系统的,这里希望切换到log4j2. pom.xml内容定义 这里在pom.xml新增了spring-boot中的日志组件 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframewo...

木小鱼的笔记 2万+
上一篇: Spring Kafka中关于Kafka的配置参数
下一篇: HDFS中将普通用户增加到超级用户组supergroup以及其应用场景
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值