slf4j使用log4j的配置参数方式

目录
  • slf4j使用log4j的配置参数
    • slf4j 的 maven 配置如下
    • 关于具体的配置 log4j.properties
    • 日志级别
    • 常用的输出位置
      • 格式化输出
  • slf4j集成log4j小结
    • 日志配置使用 Slf4j集成 log4j
      • 为什么使用slf4j
      • slf4j集成log4j所需jar包及maven配置
      • slf4j及log4j配置文件
      • slf4j集成log4j

slf4j使用log4j的配置参数

slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。

按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

比如用户可以自己选择使用 log4j 或是 log4j2 。

slf4j 的 maven 配置如下

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

关于具体的配置 log4j.properties

### 设置rootLogger ###
log4j.rootLogger = info,stdout,D,E
### 输出信息到控制台 ###
### 控制台输出
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
### 默认是system.out,如果system.err是红色提示
log4j.appender.stdout.Target = System.out
### 布局格式,可以灵活指定
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
### 消息格式化
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出INFO 级别以上的日志到=D://logs/error.log ###
### 以每天一个文件输出日志
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
### 输出文件目录
log4j.appender.D.File = D://logs/log.log
### 消息增加到指定的文件中,false表示覆盖指定文件内容
log4j.appender.D.Append = true
### 输出信息最低级别
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 输出ERROR 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

日志级别

主要有以下:

  • ERROR 错误
  • WARN 警告
  • INFO 一般信息
  • DEBUG 调试信息

常用的输出位置

  • ConsoleAppender 控制台
  • FileAppender 文件
  • DailyRollingFileAppender 每天产生一个日志文件
  • RollingFileAppender 文件大小达到指定尺寸时产生一个新文件
  • WriterAppeder 将日志信息以流格式发送到指定地方

格式化输出

  • -X号: X信息输出时左对齐;
  • %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
  • %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  • %r: 输出自应用启动到输出该log信息耗费的毫秒数
  • %c: 输出日志信息所属的类目,通常就是所在类的全名
  • %t: 输出产生该日志事件的线程名
  • %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
  • %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像Java servlets这样的多客户多线程的应用中。
  • %%: 输出一个”%”字符
  • %F: 输出日志消息产生时所在的文件名称
  • %L: 输出代码中的行号
  • %m: 输出代码中指定的消息,产生的日志具体信息

有时我们看到 %-5p 或者 %5p 意思就是输出日志级别时,左对齐或右对齐,4个字母的 INFO / WARN 要补一个空格,才能和 DEBUG / ERROR 对齐格式。

slf4j集成log4j小结

日志配置使用 Slf4j集成 log4j

  • 为什么使用slf4j
  • slf4j集成log4j所需jar包及maven配置
  • slf4j及log4j配置文件
  • slf4j集成log4j示例

为什么使用slf4j

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。通过示例说明该特性:

public class App {
    final Logger logger = LoggerFactory.getLogger(App.class);
    private void test() {
        logger.info("这是一条日志信息 - {}", "mafly");
    }
    public static void main(String[] args) {
        App app = new App();
        app.test();
        System.out.println("Hello World!");
    }
}

对于不同的日志系统而言只需增加slf4j依赖包

    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.22</version>
</dependency>

对于使用logback日志系统用户而言 配置

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.9</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.9</version>
</dependency>

同时配置logback.xml的配置文件,即可使用slf4j管理日志系统,同时如果想要切换日志系统,例如 想要切换到log4j,无需修改代码,只需将上述logback dependency删除,增加log4j的配置

  <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

可以实现不修改代码,更改日志系统的功能。

slf4j集成log4j所需jar包及maven配置

  <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.21</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

所需外部支持可分为三部分:slf4j-api包 log4j包 以及slf4j-log4j12guanlainbao

slf4j及log4j配置文件

在 src/main/resources中 new–>resource bundle —->写入文件名 log4j 生成log4j.properties文件

### config root logger
log4j.rootLogger=info, STDOUT

配置根logger 格式为 [level],appenderName1,appenderName2……

其中[level]共分为5级,如下:

FATAL 0
ERROR 3
WARN 4
INFO 6
DEBUG 7

appendername是配置日志输出的目的地

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Target=System.out
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

其中appender的类型有如下几种:

org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

输出格式layout有如下几种

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

打印参数配置如下:

%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )

输出到文件中示例:

### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

slf4j集成log4j

约定大于配置,如果将log4j.properties放置在classpath中,即resources文件夹下 可自动读取

 private static  final Logger logger= LoggerFactory.getLogger(TestUtil.class);
    public static void main(String [] args){
     logger.info("info信息");
     logger.debug("debug信息");
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析

    注:下文中的"桥接"."转调"."绑定"等词基本都是同一个概念. log4j-over-slf4j和slf4j-log4j12是跟java日志系统相关的两个jar包,当它们同时出现在classpath下时,就可能会引起堆栈溢出异常.异常信息大致如下(摘自slf4j官网文档Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting St

  • slf4j与log4j全面了解

    推荐使用SLF4J(Simple Logging Facade for Java)作为日志的api,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统. 1.Slf4j优势 与使用apache commons-logging或直接使用log4j相比,SLF4J提供了一个名为参数化日志的高级特性,可以显著提高在配置为关闭日志的情况下的日志语句性能, log.debug("Found {} records matching filter: '{}'&qu

  • 关于slf4j_log4j2源码学习心得

    目录 日志工厂获取Logger 日志输出Logger.info 异步日志写入 异步日志上下文选择 locateContext定位选择日志上下文 总结 日志工厂获取Logger 获取日志工厂_getILoggerFactory_ 执行初始化performInitialization 绑定工厂bind 查找可能被绑定的StaticLoggerBinder类路径findPossibleStaticLoggerBinderPathSet 如果LoggerFactory类加载器为空则使用System类加载

  • 详解SSM框架下结合log4j、slf4j打印日志

    本文主要介绍了详解SSM框架下结合log4j.slf4j打印日志,分享给大家,具体如下: 首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dep

  • SpringBoot集成slf4j+log4j2的示例代码

    本文介绍了SpringBoot集成slf4j+log4j2的示例代码,分享给大家,具体如下: Maven依赖 <!--增加log4j2依赖↓--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency&g

  • Day21logj4与sl4j的使用与区别详解

    学习目标 (1)Junit 针对方法 (2)log4j与sl4j (3)Spring - IOC log4j的介绍 (1)什么是log4j?  Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件等 (2)有什么特点?  >可以控制每一条日志的输出格式  >控制日志的生成过程 通过一个配置文件来灵活地进行配置log4j.properties,而不需要修改应用的代码 public class Test01 { //模式 debug priva

  • slf4j使用log4j的配置参数方式

    目录 slf4j使用log4j的配置参数 slf4j 的 maven 配置如下 关于具体的配置 log4j.properties 日志级别 常用的输出位置 格式化输出 slf4j集成log4j小结 日志配置使用 Slf4j集成 log4j 为什么使用slf4j slf4j集成log4j所需jar包及maven配置 slf4j及log4j配置文件 slf4j集成log4j slf4j使用log4j的配置参数 slf4j,即简单日志门面(Simple Logging Facade for Java)

  • 详解Java中log4j.properties配置与加载应用

    log4j.properties总结: 一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN. I

  • springboot+log4j.yml配置日志文件的方法

    一,Maven 依赖 pom.xml配置 1, 去掉默认日志,以便切换到log4j2的日志依赖 2, 然后添加如下两个日志依赖 二,在工程根目录下添加 lo4g2.yml 配置文件 2, 配置文件内容 <!-- 配置 log4j2 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artif

  • log4j2的异步使用及添加自定义参数方式

    目录 log4j2异步使用及添加自定义参数 添加依赖(这里省略了版本号) 下面写一个生产可用的log4j2.xml的模板 补充知识 自定义日志格式 如何在日志中添加自己想传的参数? log4j 输入自定义参数 测试代码如下 log4j2异步使用及添加自定义参数 关于log4j2的性能和原理就不赘述了,这篇主要讲使用,配置文件解读,和添加自定义参数,偏应用的一篇文章. 相比与其他的日志系统,log4j2丢数据这种情况少:disruptor技术,在多线程环境下,性能高于logback等10倍以上:利

  • log4j.properties 配置(实例讲解)

    1.需要的jar如下: !-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artif

  • 对MySQL配置参数 my.ini/my.cnf的详细解析

    以下的文章主要描述的是对MySQL配置参数 my.ini/my.cnf的详细解析,我们主要是以实例演示的方式来对MySQL配置参数 my.ini/my.cnf的实际操作步骤进行说明,以下就是相关内容的具体描述. 1.获取当前配置参数 要优化MySQL配置参数,首先要了解当前的配置参数以及运行情况.使用下列命令可以获得目前服务器使用的配置参数: 复制代码 代码如下: mysqld –verbose –help mysqladmin variables extended-status –u root

  • Nginx配置参数中文说明详解(负载均衡与反向代理)

    PS:最近在看<<高性能Linux服务器构建实战>>的Nginx章节,对其nginx介绍的非常详细,现把经常用到的Nginx配置参数中文说明摘录和nginx做负载均衡的本人真实演示实例抄录下来以便以后查看! Nginx配置参数中文详细说明 #定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; # #全局错误日志定义类型,[ debug | info | notice | war

  • @Value如何获取yml和properties配置参数

    @Value获取yml和properties配置参数 Yml: #定时任务配置 application: xxl: job: enabled: true admin: addresses: http:///yusp-job-admin/ #127.0.0.1:8080指网关ip:port,yusp-job-admin为调度中心服务名称.通过网关,注册到微服务的/api/server接口,完成注册动作 executor: appname: af_job #执行器名称,要求务必唯一 ip: 10.2

  • Log4j.properties配置及其使用

    目录 一.log4j简介 1.Loggers 2.Appenders 3.Layouts 二.配置详解 1.配置根Logger: 2.配置日志信息输出目的地(appender): 2.1ConsoleAppender选项 2.2FileAppender选项 2.3DailyRollingFileAppender选项 2.4RollingFileAppender选项 3.配置日志信息的输出格式(Layout) 3.1HTMLLayout选项 3.2PatternLayout选项: 一个不错的参考配

随机推荐