JAVA中使用log4j及slf4j进行日志输出的方法

这篇具有很好参考价值的文章主要介绍了JAVA中使用log4j及slf4j进行日志输出的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法。

一、下载log4j的架包,并导入项目中,如下:

slf4j生成日志文件,java,log4j,单元测试

二、创建log4j.properties配置文件
1、log4j配置文件的位置:

(1)如果是java project项目,则在项目的根目录下创建log4j.properties而不是在src目录下。

(2)如果是java web项目,则在src目录下创建log4j.properties配置文件,因为这个时候tomcat会去默认的加载这个配置文件,而不需要我们手动的加载log4j的配置文件。

log4j.properties配置内容如下:

1 log4j.rootLogger=info,logTest
2 log4j.appender.logTest=org.apache.log4j.DailyRollingFileAppender
3 log4j.appender.logTest.File=/logs/LogTest/logTest.log
4 log4j.appender.logTest.DatePattern='.'yyyy-MM-dd'.log'
5 log4j.appender.logTest.layout=org.apache.log4j.PatternLayout
6 log4j.appender.logTest.layout.ConversionPattern=[LogTestInfo] [%d][%c][%-5p]%m%n

2、log4j配置项的说明:
  • 第一行中

    • rootLogger配置的是整个项目的日志输出,也可以只针对某一个模块进行日志输出,比如第一行配置成log4j.logger.com.logTest.project=info,logTest,则日志只输出项目路径com/logTest/project下的。

    • info为日志级别,可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。配置为info这样只显示INFO, WARN, ERROR的日志信息。

    • logTest为日志配置的名称,对应的详细配置在下面。

  • 第二行是指定日志输出的类型。可选参数如下:

    • org.apache.log4j.ConsoleAppender(控制台)

    • org.apache.log4j.FileAppender(文件)

    • org.apache.log4j.DailyRollingFileAppender(每隔一段时间产生一个日志文件)

    • org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

    • org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  • 第三行是指定日志文件输出的路径及文件名。

    • 如果输出到指定位置:log4j.appender.logTest.File=D:\logTest.log

    • 如果输出到当前tomcat工作目录下:log4j.appender.logTest.File=${catalina.home}/logTest/logTest.log

  • 第四行是配合第二行设置,对日志产生的时间间隔进行格式化设置,格式化后的文本会作为日志文件的后缀。以上面第四行的设置为例,即每天产生一个新的logTest.log日志文件,并将前一天的日志命名为logTest.log.2017-07-07.log。注意:DatePattern中不用处理的文字要放到单引号(')中,如上面的(.)和(.log)。

    • 可选参数如下:

    • '.'yyyy-MM:每月

    • '.'yyyy-ww:每周

    • '.'yyyy-MM-dd:每天

    • '.'yyyy-MM-dd-a:每半天

    • '.'yyyy-MM-dd-HH:每小时

    • '.'yyyy-MM-dd-HH-mm:每分钟

  • 第五行是指定日志输出的格式。可选参数如下:

    • org.apache.log4j.HTMLLayout(以HTML表格形式布局)

    • org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

    • org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

    • org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

  • 第六行是配合第五行设置,对日志输出进行格式化设置。以第六行设置为例,[LogTestInfo] %d[%-5p]%m%n 的输出结果为:

slf4j生成日志文件,java,log4j,单元测试

  • 格式化参数说明如下:

    • %m 输出代码中指定的消息。

    • %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。

    • %r 输出自应用启动到输出该log信息耗费的毫秒数。

    • %c 输出所属的类目,通常就是所在类的全名。

    • %t 输出产生该日志事件的线程名。

    • %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”。

    • %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss,SSS}。

    • %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

    • %%: 输出一个"%"字符。

    • %F: 输出日志消息产生时所在的文件名称。

    • %L: 输出代码中的行号。

可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:

1)%20c:指定输出类目的名称,最小的宽度是20,如果类目的名称小于20的话,默认的情况下右对齐。

2)%-20c:指定输出类目的名称,最小的宽度是20,如果类目的名称小于20的话,"-"号指定左对齐。

3)%.30c:指定输出类目的名称,最大的宽度是30,如果类目的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。

4)%20.30c:如果类目的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

三、日志输出代码例子
  • 在类中创建一个logger对象。

private Logger logger = Logger.getLogger(this.getClass());
  • 使用logger输出日志。

logger.info("TestInfo 1");

输出效果:

slf4j生成日志文件,java,log4j,单元测试

到这里,log4j的配置及使用就讲完了。下面顺便讲下slf4j的使用。

四、slf4j配合log4j的使用

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

在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

(1)下载slf4j的架包,并导入项目中,如下:

slf4j生成日志文件,java,log4j,单元测试

(2)直接使用上面第二点中log4j的配置即可,不用另外配置slf4j。

(3)在类中创建logger对象。

private Logger logger = LoggerFactory.getLogger(this.getClass());

这里注意要使用slf4j架包中的Logger,而不是log4j架包中的Logger。

(3)使用logger输出日志。

1 logger.info("TestInfo 1");
2 logger.info("TestInfo {}","1");

slf4j有两种输出方式,除了像log4j那样拼接字符串输出外,还提供参数化的方式输出,即上面第二行的方式,用一对大括号来表示参数位,后面的1即为参数值。文章来源地址https://www.toymoban.com/news/detail-729776.html

到了这里,关于JAVA中使用log4j及slf4j进行日志输出的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java 项目配置slf4j - log4j2

    2024年02月13日
    浏览(43)
  • Java中的Log4j是什么?如何使用Log4j进行日志管理

    Log4j是一个Java日志管理工具,它可以帮助开发者在应用程序中记录日志。它是由Apache软件基金会开发和维护的,已经成为Java开发中最流行的日志管理框架之一。 Log4j可以通过多种方式记录日志,包括控制台输出、文件输出、数据库存储等。此外,Log4j还提供了多种日志级别,

    2024年02月04日
    浏览(56)
  • 记录一次@Slf4j log.info 日志信息未输出到日志文件的问题

    Spring Boot的起步依赖(如spring-boot-starter-web)中已经包含了Slf4j的依赖,无需额外添加。: 当你在项目中添加了 spring-boot-starter-web 依赖后,它将自动引入以下关键组件和依赖项: Spring MVC:用于构建Web应用程序的模型-视图-控制器(Model-View-Controller)框架。 Tomcat(或其他嵌入式

    2024年02月06日
    浏览(44)
  • 使用@Slf4j后引入log,idea标红

    引入@Slf4j注解 idea标红Cannot resolve symbol ‘log’ 引入Lombok插件 如果在Marketplace查不到时,不妨关闭菜单再打开试下

    2024年01月18日
    浏览(36)
  • SLF4J日志框架在项目中使用

    SLF4J全称“Simple Logging Facade for Java”,作为各种日志框架的简单门面。例如: java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下: log4j:常用的日志框架,需要有配置文件log4j.properties logback:可以通过logba

    2024年02月02日
    浏览(41)
  • 学习SpringBoot使用slf4j日志并输出到文件中

    再使用前,先了解一下介绍,否则你也不会用! 1、日志级别 SLF4J将日志分为trace、debug、info、warn、error五个级别,每个级别对应记录不同的日志,对应不同的使用场景。 日志级别从低到高分为 TRACE DEBUG INFO WARN ERROR FATAL 如果设置为 WARN ,则低于 WARN 的信息都不会输出 一般设

    2024年02月06日
    浏览(43)
  • 微服务学习系列15:日志框架slf4j使用和原理

    目录   前言 一、slf4j 项目Github地址: slfj4j桥接API slf4j 项目模块描述 二、slf4j-api 简单使用 代码分析  三、基础知识 外观模式 适配器模式 什么是桥接模式 什么是SPI 什么是API 四、设计分析 参考 slf4j主要是为了给Java日志访问提供一个标准、规范的API框架,其主要意义在于提

    2024年02月07日
    浏览(36)
  • 【SpringBoot中使用SLE4J日志框架启动报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinde】

    1.1 出现的问题 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 1.2 原因分析 检查自己的maven依赖,发现已经引入了slf4j-api了,这是为什么呢?其原因是,SLF4J本身

    2024年02月13日
    浏览(36)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手;此时就需要一些日志框架来完成这

    2024年02月15日
    浏览(47)
  • java.lang.ClassCastException: class org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast 解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包