文档章节

slf4j 和 log4基础入门(Maven配置)

GreatQing
 GreatQing
发布于 2016/07/12 22:56
字数 826
阅读 154
收藏 6
点赞 0
评论 0

    我们将从四个问题出发。

    第一,log4j是什么?

    log4j是一个日志系统,是Apache的一个开放源代码项目。当然Java日志系统比较丰富,其他常用的日志系统还有java.util.logging、JUL、logback等等。

    第二,slf4j又是什么?

    slf4j(Simple logging facade for Java),即简单日志门面。它不同于上面所说的各种日志系统,不是真正的日志实现,不是具体的日志解决方案。而是一个抽象层,它允许你在后台使用任意一个日志系统(例如log4j)。即slf4j是一个具体日志系统的封装,对外提供统一的API,但其本身并不提供日志实现。

    第三,既然已经有各种日志系统了,为什么还要使用slf4j?

    问题就是现在有了各种日志系统,因此每个类库使用的日志系统都可能不一样。但lf4j允许你在后台使用任意一个日志系统(例如log4j),即使得你的程序独立于任意特定的日志系统。例如,你的一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active MQ使用了slf4j,你就可以继续使用你的日志系统而无需加载和维护一个新的日志框架。

    第四,果真如此好用,那怎么使用?

    首先,准备相应的包。

    1.slf4j-api-x.x.x.jar 它提供对外一致的API接口,其本身不提供日志实现。
    2.这里选择log4j作为我们的日志实现,则需要下载 log4j-x.x.x.jar。
    3.如果想把slf4j绑定log4j,则需要下载slf4j对log4j的相应”驱动” slf4j-log4j12-x.x.x.jar。


    这样就可以使用slf4j提供的API,用log4j实现打印日志了。具体在Maven porn.xml 文件中添加的dependency如下:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.6</version>
</dependency>

    然后,添加配置文件。log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties格式的文件。我们这里采用properties格式的方法。

在项目中添加log4j.properties文件,如下图:

具体配置如下:

# config root logger
# [level] 是日志输出级别
log4j.rootLogger = INFO,system.out
# Appender 为日志输出目的地
log4j.appender.system.out=org.apache.log4j.ConsoleAppender
log4j.appender.system.out.layout=org.apache.log4j.PatternLayout
log4j.appender.system.out.layout.ConversionPattern=Server Logger --> %5p{%F:%L} = %m%n

# config this Project.file logger
log4j.logger.thisProject.file=INFO,thisProject.file.out
# 每天产生一个日志文件
log4j.appender.thisProject.file.out=org.apache.log4j.DailyRollingFileAppender
log4j.appender.thisProject.file.out.File=logContentFile.log
log4j.appender.thisProject.file.out.layout=org.apache.log4j.PatternLayout

    最后,在代码中使用日志系统。示例代码如下:

import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App {

    // 通过指定的名字获得日志对象
    public static final Logger log = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {

        // 通过资源类对log4j.properties文件进行加载
        PropertyConfigurator.configure("D:\\Workspace\\man\\src\\log4j.properties");
        log.info("Hello,World!");
    }
}

使用效果:

至此成功打印输出了日志。

    通过此篇文章,我们简单了解slf4j和log4j的背景。在此基础通过一个简单的例子,实现了slf4j和log4j的配置使用。其中省略了很多细节,待下次深入研究后再另起一篇博文详细介绍吧。

© 著作权归作者所有

共有 人打赏支持
GreatQing
粉丝 6
博文 17
码字总数 11370
作品 0
广州
程序员
让 Spring Framework 依赖 SLF4J 的 Maven 配置

Spring Framework 一直以来都是依赖 commons-logging,通过在 Maven pom.xml 进行配置,可以让 Spring Framework 依赖于越来越流行的 SLF4J,这是利用了 slf4j.org 提供的 jcl-over-slf4j 把...

张前程
2013/12/30
0
0
奇葩错误SLF4J: Failed to load class org.slf4j。。的修复

用Kepler eclipse自带的maven插件搞了一个maven项目,build的过程中出现如下红色信息: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-opera......

WangPerry
2013/12/25
0
1
Java混乱的日志体系(logback)(转)

作为一名 Java 程序员,日常开发工作中肯定会接触日志系统,但是众多的框架,包括 Log4j、Log4j2、Logback、Slf4j、Apache Common logging 等等,引用的 maven 依赖众多,到底可以去掉哪些,...

easonjim
2017/12/27
0
0
【SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".】解决办法

【问题描述】 Maven工程中,使用了slf4j,运行时出现错误: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implement......

dwf07223
06/26
0
0
Spring3 MyBatis3 日志配置

//org.apache.ibatis.logging.LogFactory; static { } 查看Mybatis源码发现,他日志框架的寻找顺序:slf4j-->commons logging-->log4j 不能直接引入log4j jar包,因为即使我不导入slf4j的包,...

xingda
2012/04/17
0
0
slf4j与jul、log4j1、log4j2、logback的集成原理

1 系列目录 - jdk-logging、log4j、logback日志介绍及原理- commons-logging与jdk-logging、log4j1、log4j2、logback的集成原理- slf4j与jdk-logging、log4j1、log4j2、logback的集成原理- s...

乒乓狂魔
2015/04/30
0
5
为什么要使用 SLF4J 而不是 Log4J

本文由 ImportNew - Jaskey 翻译自 javarevisited。如需转载本文,请先参见文章末尾处的转载要求。 每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而...

编走编想
2013/12/07
0
0
SLF4J: Multiple bindings were found on the class path

众所周知,SLF4J是一个日志门面框架,它的作用是用于定义统一的日志接口,而具体的日志实现是由各个日志框架实现的,比如log4j,logback等。 问题 在使用SLF4J时,当class path同时包含了多个...

勇敢的飞石
05/17
0
0
Java日志框架:SLF4J, Apache Common-Logging, Log4J和Logba

Log4j Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;用户也可以控...

凯文加内特
2015/05/08
0
0
java日志组件介绍(common-logging,log4j,slf4j,logback)

common-logging common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,...

五大三粗
2015/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部