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

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

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

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

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

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

img

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

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

(2)如果是java web项目,则在class="lazy" data-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 的输出结果为:

img

  • 格式化参数说明如下:

    • %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");

输出效果:

img

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

四、slf4j配合log4j的使用

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

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

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

img

(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://blog.csdn.net/weixin_59295776/article/details/131785897

免责声明:

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

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

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

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

下载Word文档

猜你喜欢

怎么在Python中使用handler方法输出日志

今天就跟大家聊聊有关怎么在Python中使用handler方法输出日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;
2023-06-14

Java中的输出方法怎么使用

在Java中,可以使用以下方法进行输出:1. 使用System.out.println()方法:这是最常用的输出方法之一,用于将结果打印到控制台并换行。```javaSystem.out.println("Hello, World!");`
2023-09-20

Python使用logging结合decorator模式实现优化日志输出的方法

本文实例讲述了Python使用logging结合decorator模式实现优化日志输出的方法。分享给大家供大家参考,具体如下: python内置的loging模块非常简便易用, 很适合程序运行日志的输出。 而结合python的装饰器模式,则
2022-06-04

如何使用PHP进行日志记录?(PHP实现日志记录的方法有哪些?)

日志记录是应用程序开发中用于记录事件、错误和调试信息的至关重要的技术。PHP提供了多种日志记录方法,每种方法都有其独特的优势和劣势。文件日志记录:简单易用,但缺乏格式化和中央日志管理。数据库日志记录:提供高级格式化和查询功能,但需要数据库服务器。Syslog日志记录:将日志信息发送到系统日志守护程序,可以将日志信息集中到一个位置。第三方库:使用第三方库简化日志记录过程,提供丰富的功能,如格式化、过滤和远程日志记录。选择最合适的日志记录方法取决于应用程序的需求。对于简单的情况,文件日志记录可能足够;对于需要
如何使用PHP进行日志记录?(PHP实现日志记录的方法有哪些?)
2024-04-02

Java Socket使用加密协议进行传输对象的方法

本文实例讲述了Java Socket使用加密协议进行传输对象的方法。分享给大家供大家参考,具体如下:前面的几篇文章介绍了Socket中一些常见的用法,但是对于一些有安全要求的应用就需要加密传输的数据,此时就需要用到SSLSocket了。还是
2023-05-31

Java中的线程如何使用使用join方法进行暂停

Java中的线程如何使用使用join方法进行暂停?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体内容如下Java代码:package Threads;import java.
2023-05-31

C#中如何使用XML和JSON数据格式进行数据存储和传输及解决方法

C#中如何使用XML和JSON数据格式进行数据存储和传输及解决方法XML和JSON是目前广泛应用于数据交换和存储的两种标准格式。在C#中,我们可以使用内置的库和工具来处理和操作XML和JSON数据。本文将详细介绍如何在C#中使用XML和JS
2023-10-22

linux系统中的java web项目文件名怎么使用renameTo方法进行修改

linux系统中的java web项目文件名怎么使用renameTo方法进行修改?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。经测试,在Linux环境中安装to
2023-05-31

Express框架中使用EJS模板引擎并结合silly-datetime库进行日期格式化的实现方法 原创

这篇文章主要介绍了Express框架中使用EJS模板引擎并结合silly-datetime库进行日期格式化的实现方法,结合具体实例形式分析了express框架引入EJS模版以及导入silly-datetime库的格式化方法传递给EJS模版使用的相关操作技巧,需要的朋友可以参考下
2023-05-20

编程热搜

  • 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动态编译

目录