`

spark使用logback+slf4j 替换log4j+slf4j

阅读更多

背景:

 

            spark1.6以前的版本默认是log4j+slf4j的方案来做日志, 在我们实际开发项目的过程中大多数是使用logback+slf4j的方案来做日志。

 

配置方法: 

 

1.  logbak+slf4j 项目中 java类里面的代码的写法和 log4j+slf4j的 代码写法完全一模一样的

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 *这个类提供了一些根据类的class文件位置来定位的方法。
 *
 * @version 1.0 2011-4-27 上午12:40:08
 * @since 1.0
 */
public class ClassLoaderUtil{
 
   private final static Logger log   = LoggerFactory.getLogger(ClassLoaderUtil.class);

 slf4j的切面日志功能功不可没,代码中可以忽略logback或者 log4j 的存在

2.   去掉 maven pom.xml 所有直接/间接的 log4j 依赖

比如

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>${spark.version}</version>
            <!-- spark默认使用log4j,我们需要使用logback,所以将讲spark的log4j依赖进行移除-->
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

 

3.   去掉 maven pom.xml 所有直接/间接的 slf4j-log4j12 依赖

如上面的 exclusion

4.  增加 logback 依赖

        <!--******** logback and slf4j ******** -->
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${version.logback}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${version.logback}</version>
      </dependency>
 
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${version.logback}</version>
      </dependency>
 
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
 
      <!--jul桥接 用来输出 Java Logging Framework (JUL) -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
 
      <!-- jcl桥接,用来输出 第三方Jakarta Commons Logging (JCL) -->
      <dependency>
         <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${version.slf4j}</version>
      </dependency>

 

分享到:
评论
2 楼 see_you_again 2016-06-12  
回复一楼:我也只是初学
1 楼 wu_shao_jie 2016-05-10  
嗨,我在用spark-submit命令提交作业的时候,应用程序自己的logback.xml配置被spark自身的log4j.properties配置覆盖掉了,这种情况该怎么解决?

相关推荐

    Spark升级后无Logging类

    在早期的Spark版本中,`org.apache.spark.Logging`接口被广泛用于日志记录,但在Spark 2.0中,这个接口已经被废弃,并被替换为更通用的日志框架SLF4J(Simple Logging Facade for Java)。 **Spark与Logging的变迁*...

    qqq.rar_The Web_web log_web server

    在处理日志功能时,Java通常会利用内置的`java.util.logging`包或者第三方日志框架,如Log4j、Logback和SLF4J等。 增强Web服务器日志功能的关键在于定制化。这可能包括以下几个方面: 1. **自定义日志格式**:通过...

    Kryo所需的依赖包

    - `slf4j-api`:简单日志门面,可以与各种日志实现(如Logback、Log4j)配合使用。 - `reflectasm`:一个用于访问和修改Java反射的高效库,Kryo利用它来加速反射操作。 - `asm`:字节码操作库,反射ASM提供底层的...

    java核心知识点整理

    - 日志框架如Log4j、Logback和SLF4J用于记录应用程序运行过程中的信息,便于调试和问题追踪。 8. 消息中间件: - Kafka和RabbitMQ是常用的消息队列,用于异步处理和解耦系统组件。 - HBase、MongoDB和Cassandra...

    BSFrameWorkExam

    BSFrameWorkExam可能使用了Log4j、Logback或SLF4J等日志框架,记录应用程序的运行信息。 以上就是BSFrameWorkExam框架的核心知识点,它为开发者提供了一个完整的、易于扩展的Web开发基础,帮助快速构建功能丰富的BS...

    process-log

    在Java中,常见的日志框架有Log4j、Logback、Java Util Logging(JUL)和SLF4J(Simple Logging Facade for Java)。这些框架提供了灵活的日志级别,如DEBUG、INFO、WARN、ERROR和FATAL,帮助开发者根据需要选择不同...

    梳理的一些java开发中用上的框架和开发工具,肯定会遗漏,欢迎补充

    Logback 是Log4j的一个替代品,提供了更好的性能。 - **SLF4J**: 框架。Simple Logging Facade for Java (SLF4J) 是一个用于多种日志框架的简单抽象层。 #### 单元测试 - **JUnit**: 工具。JUnit 是一个Java编程...

    Java_SDK.tar.gz_etl程序

    Java程序常被用于生成和处理日志,因为Java有强大的IO流支持和丰富的库,如Log4j、SLF4J和Logback,这些库可以帮助开发者轻松地记录和管理日志。 配合Flume,这是一个由Apache开发的数据收集系统,能够高效地从多个...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    slf4j 框架实现 log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程工具 eclipse myeclipse idea vi VS webstorm...

    Java类库大全

    9. **日志记录**:Log4j、SLF4J和Logback是常见的日志记录库,它们提供了灵活的日志级别控制和输出格式定制。 10. **图形用户界面**:JavaFX和Swing是Java内置的GUI库,而JavaFX提供了更现代和丰富的UI组件。对于更...

    99-Apache InLong 的 SPI 扩展实践.pdf

    - **日志框架**:SLF4J 使用 SPI 来加载不同的日志实现,如 Logback 或 Log4j。 - **Spring 类型转换**:Spring 使用 SPI 实现类型转换的扩展性,例如 Converter SPI 和 Formatter SPI。 ##### SPI 改造实践 为了...

    logos-aj

    日志框架如Log4j、Logback和SLF4J(Simple Logging Facade for Java)是非常常用的,它们提供了一种标准的方式来管理和控制应用程序的日志输出。 描述中的“logos-aj”没有提供额外的具体信息,但我们可以假设它...

    JAVA核心知识点全集

    日志系统如Log4j、SLF4J和Logback对于问题排查至关重要。分布式协调服务Zookeeper常用于服务发现和配置管理,而消息中间件如Kafka和RabbitMQ则提供了高吞吐量的消息传递能力。 数据库管理是数据持久化的关键,涵盖...

    去污后端

    8. **日志管理**: 日志记录对于调试和问题追踪至关重要,项目可能使用Log4j、SLF4J或Logback等日志框架。 9. **Docker化部署**: 为了便于部署和扩展,项目可能已经实现了Docker化,通过Dockerfile定义容器环境,...

    LogTeam:KODB2014_LogTeam

    他们可能利用Java的开源库,如Log4j、SLF4J或Logback,来实现日志记录和管理功能。 结合【压缩包子文件的文件名称列表】"LogTeam-master",这通常是一个开源项目的主分支或者源代码仓库。"master"分支通常代表项目...

    RechoBase

    这通常涉及到日志适配器的设计,支持不同的日志框架如Log4j、SLF4J、Logback等。 2. **日志格式化**:为了方便日志的阅读和分析,RechoBase可能会包含日志格式化策略,支持自定义日志输出格式,如JSON、CSV等,以...

    dsdeliver-sds1

    Log4j、SLF4J和Logback是常用的Java日志框架,它们帮助开发者追踪系统运行状态,定位和解决问题。 综上所述,"dsdeliver-sds1"项目涵盖了Java编程、并发处理、网络编程、数据库交互、分布式服务和数据处理等多个...

    批处理

    Java应用可以通过JMX(Java Management Extensions)提供监控接口,而日志框架如Log4j、SLF4J和Logback可以帮助收集和分析运行时信息。 9. **异常处理和容错**: 在批处理中,错误处理和恢复机制是必不可少的。...

    SystemDesign:系统设计

    9. **错误处理与日志记录**:Java的Exception处理机制和日志框架(如Log4j、SLF4J和Logback)用于捕获和记录系统运行时的异常信息,便于问题排查。 10. **安全设计**:Java提供了一系列的安全框架和API,如Spring ...

Global site tag (gtag.js) - Google Analytics