我的编程空间,编程开发者的网络收藏夹
学习永远不晚

slf4j使用log4j的配置参数方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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配置文件

在 class="lazy" data-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信息");
    }

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

slf4j使用log4j的配置参数方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Log4j的配置与使用

本篇内容主要讲解“Log4j的配置与使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Log4j的配置与使用”吧!Log4j简介第1章. Log4j 的优点Log4j是Apache的一个开放源代
2023-06-03

Log4j properties的配置及其使用方法

这篇文章主要讲解了“Log4j properties的配置及其使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Log4j properties的配置及其使用方法”吧!目录一、log4j
2023-06-20

使用Logback设置property参数方式

这篇文章主要介绍了使用Logback设置property参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-10

nacos使用占位符${}进行参数配置的方法

这篇文章主要介绍了nacos如何使用占位符${}进行参数配置,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-26

云服务器怎么选择配置参数的方式

云服务器可以提供许多不同的配置方式,包括配置参数的种类、数量和复杂度。以下是一些常用的配置方式:使用CloudAutoConfigure命令进行自动化配置,该命令使用CloudAuto-Configure命令为云服务器配置CloudConfigs。使用CloudConfigConfigure命令在CloudServer.conf文件中配置云服务器的配置参数,其中包括可选的自动配置项。使用
2023-10-26

C++ 函数引用参数的内存分配方式

在 c++++ 中,函数参数可以通过值传递方式,传递参数的副本,或通过引用传递方式,直接访问参数的原始内存。当使用引用传递时,函数对参数所做的更改将直接反映在调用者中。例如,按引用传递参数可以优化性能,特别是在处理大型数据结构时,避免了额外
C++ 函数引用参数的内存分配方式
2024-04-20

.eslintrc配置目录及配置项的使用方式

这篇文章主要介绍了.eslintrc配置目录及配置项的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

云服务器怎么选择配置参数的方式呢

云服务器的配置参数可以采用各种各样的形式,以下是一些常见的配置参数的方式:CPU:-最大处理器数量。这个数值应该设置为您选择的操作系统中最大的处理器数量,以便它能够处理您选择的负载。例如,您可能希望配置1台服务器用于处理您需要的负载,1台服务器用于处理您需要多少CPU时间来处理。内存:-最大内存容量。这个数值应该设置为您选择的操作系统中最大的内存容量。这将允许您选择更多的内存,以便处理更多的负载。存储大小:-最...
2023-10-27

Python argparse命令参数与config配置参数怎么使用

这篇文章主要介绍“Python argparse命令参数与config配置参数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python argparse命令参数与config配置参数怎么使
2023-07-05

VueCLI命令行打包配置自定义参数方式

这篇文章主要介绍了VueCLI命令行打包配置自定义参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录