java常见log日志的使用方法解析

目录
  • 前言
  • 1. Java.util.Logger
  • 2. org.apache.logging.log4j
  • 3. org.slf4j.Logger

前言

log日志可以debug错误或者在关键位置输出想要的结果

java日志使用一般有原生logger、log4j、Slf4j等

一般的日志级别都有如下(不同日志不一样的方法参数,注意甄别)

参数 描述
OFF、ON 不输出或者输出所有级别信息,通常使用在setLevel方法中
FATAL 致命错误
ERROR 错误error
WARN 告警信息
INFO info信息
DEBUG 调试信息
TRACE 运行轨迹信息
CONFIG 设定配置信息
FINE 级别轻微信息
FINER 级别更轻微信息
FINEST 级别最轻微信息

1. Java.util.Logger

科普一下原生日志生成工具,主要引用import java.util.logging.Logger;

源代码函数大致有如下方法:
(给定消息将被转发到所有注册的输出处理程序对象)

// 严重信息
public void severe(String msg) { log(Level.SEVERE, msg);}

// 警告信息
public void warning(String msg) { log(Level.WARNING, msg);}

// info信息
 public void info(String msg) {log(Level.INFO, msg);}

// 设定配置信息
public void config(String msg) {log(Level.CONFIG, msg);}

// 级别小信息
public void fine(String msg) {log(Level.FINE, msg);}

// 级别更小信息
public void finer(String msg) {log(Level.FINE, msg);}

// 级别最小信息
public void finest(String msg) {log(Level.FINE, msg);}

具体示例如下:

package com.gaokaoli.logger;
import java.util.logging.Logger;

public class text1 {
    public static void main(String []args){
        Logger logger = Logger.getLogger("text1");

        logger.severe("严重信息");
        logger.warning("警示信息");
        logger.info("info信息");

        logger.config("设定配置信息");
        logger.fine("级别小的信息");
        logger.finer("级别更小的信息");
        logger.finest("级别最小的信息");
    }
}

输出截图如下:

可以看到小于info级别的信息不会在终端上显示输出

通过logger.setLevel(Level.ALL);来控制输出的级别。
ALL则输出severe、warning以及info,OF不输出,如果设置WARNING,则只输出severe以及warning;同理可推其他设置;

方法中也有通过调用提供的供应商函数来构造消息,并将其转发到所有注册的输出处理程序对象。

// 严重信息
public void severe(Supplier<String> msgSupplier) {log(Level.SEVERE, msgSupplier);}

// 警告信息
public void warning(Supplier<String> msgSupplier) {log(Level.WARNING, msgSupplier);}

// info信息
 public void info(Supplier<String> msgSupplier) {log(Level.INFO, msgSupplier); }

// 设定配置信息
public void config(Supplier<String> msgSupplier) {log(Level.CONFIG, msgSupplier);}

// 级别小信息
public void fine(Supplier<String> msgSupplier) {log(Level.FINE, msgSupplier);}

// 级别更小信息
public void finer(Supplier<String> msgSupplier) {log(Level.FINER, msgSupplier);}

// 级别最小信息
public void finest(Supplier<String> msgSupplier) {log(Level.FINEST, msgSupplier);}

2. org.apache.logging.log4j

在xml文件中导入依赖包

<dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.14.1</version>
</dependency>

<dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.14.1</version>
</dependency>

示例代码如下:

package com.gaokaoli.logger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class test3 {
    public static void main(String []args){
        Logger logger = LogManager.getLogger("text3");
        logger.fatal("fatal错误");
        logger.error("error错误");
        logger.warn("warn警示");
        logger.info("info基本信息");
        logger.debug("debug调试");
        logger.trace("trace 信息");
    }
}

输出结果如下:

其方法大致都有如下:

具体使用什么方法可对应查看

3. org.slf4j.Logger

目前主流的日志框架,可以使用占位符进行参数占位

主要通过slf4j作为日志输出
在每个类的开头都加入如下:

在xml文件中引入依赖包

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-simple</artifactId>
	<version>1.7.25</version>
	<scope>compile</scope>
</dependency>

如果不引入或者引入错误
会出现如下问题:出现SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.的解决方法

代码中通过引用通过

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

具体示例代码如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class text2 {
    public static final Logger logger = LoggerFactory.getLogger(text2.class);
    public static void main(String []args){
        logger.error("error错误");
        logger.warn("warn警示");
        logger.info("info基本信息");
        logger.debug("debug调试");
        logger.trace("trace信息");
    }
}

截图如下:

通过输出结果可看到
LoggerFactory.getLogger输出的结果带有类的相对路径,便于开发

到此这篇关于java常见log日志的使用方法解析的文章就介绍到这了,更多相关java常见log日志内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java logback日志的简单使用

    说明 logback作为log4j的替代,有很多优势.要将logback应用到项目中,步骤很简单.加入依赖的jar包和配置文件即可. logback.xml中主要元素: <property> 定义属性,定义之后,后文可以通过该变量引用. <appender> 定义日志输出格式.位置.文件分割等.被<logger>或<root>引用. <logger> 定义日志名称及对应的级别.name可以是包名.类名或者单纯的字符串.如果是包名或者类名,那么该包

  • Java日志框架之logback使用详解

    为什么使用logback 记得前几年工作的时候,公司使用的日志框架还是log4j,大约从16年中到现在,不管是我参与的别人已经搭建好的项目还是我自己主导的项目,日志框架基本都换成了logback,总结一下,logback大约有以下的一些优点: 内核重写.测试充分.初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升 logback非常自然地直接实现了slf4j,这个严格来说算不上优点,只是这样,再理解slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架

  • Java日志软件Log4j的基本使用教程

    1.概述 1.1背景 在我们的日常开发中,日志记录非常重要.在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息. 1.2简介 Log4j(log for java)是Apache的一个开放源代码项目,它提供了一种细腻的日志管理方式.通过一个配置文件,我们可以多选择的控制每条日志的输出格式和目的地.通过定义信息的级别,我们也

  • Java十分钟精通Log4j日志的使用

    目录 为什么要用日志? 下载: 详细步骤: 一.打开IDEA 二.创建日志对象 为什么要用日志? 我们知道,程序在运行过程中会产生很多很多信息,比如在几点几分的时候运行了,运行的结果是怎么样的?为了我们更加了解程序运行的情况,可以通过日志来查看,日志可以在控制台输出,也可以输出至指定的文件内,在下面的文章中具体的给大家介绍. 下载: Log4J是Apache公司的开源项目,用于日志处理.下载地址: https://logging.apache.org/log4j/2.x/download.htm

  • 在Java中使用日志框架log4j的方法

    日志就是记录程序的运行轨迹,方便快速定位问题 如果用System.out.println(),信息是打印在控制台.等到产品上线后没有控制台,如果有报错信息,根本不知道去哪里看,就不知道是哪里出错. 而且开发的时候希望打印输出的内容多.方便排查,上线后只希望打印容易出错的部分.System.out.println()满足不了这个需求 而日志框架可以让错误信息输出到多个指定文件,不同的文件有不同的输出内容.方便排错,定位错误 一.log4j介绍 Log4j有三个主要的组件/对象:Loggers(记录

  • Java接口测试之日志框架Logback的具体使用

    目录 一.引言 二.前言 三.LogBack.Slf4j和Log4j之间的关系 四.默认日志Logback 五.配置详解 1.添加日志依赖 2.配置文件 六.多环境日志输出 七.单元测试 八.工程目录 九.总结 一.引言 对于一个成熟的接口测试框架,日志管理这个是必不可少的.在开发和调试阶段,日志可以帮助我们更快的定位问题:而在测试的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通 二.前言 Spring Boot 在所有内部日志中使用Commons Logging,但是默认配置也提供

  • java常见log日志的使用方法解析

    目录 前言 1. Java.util.Logger 2. org.apache.logging.log4j 3. org.slf4j.Logger 前言 log日志可以debug错误或者在关键位置输出想要的结果 java日志使用一般有原生logger.log4j.Slf4j等 一般的日志级别都有如下(不同日志不一样的方法参数,注意甄别) 参数 描述 OFF.ON 不输出或者输出所有级别信息,通常使用在setLevel方法中 FATAL 致命错误 ERROR 错误error WARN 告警信息 I

  • Java 常见的并发问题处理方法总结

    好像挺久没有写博客了,趁着这段时间比较闲,特来总结一下在业务系统开发过程中遇到的并发问题及解决办法,希望能帮到大家

  • iOS Xcode8更新后输出log日志关闭的方法

    刚把Xcode更新到最新的8,一运行发现好多log输出,根据如下操作可以关掉这些log日志,点击项目Edit Scheme - Run - Arguments - Environment Variables里添加:Name:OS_ACTIVITY_MODE  Value:disable 如图: 以上所述是小编给大家介绍的iOS Xcode8更新后输出log日志关闭的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • Java HashMap两种简便排序方法解析

    这篇文章主要介绍了Java HashMap两种简便排序方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 HashMap的储存是没有顺序的,而是按照key的HashCode实现. key=手机品牌,value=价格,这里以这个例子实现按名称排序和按价格排序. Map phone=new HashMap(); phone.put("Apple",8899); phone.put("SAMSUNG",7000);

  • Java链表数据结构及其简单使用方法解析

    目录 认识链表结构 单向链表 双向链表 加深对链表结构的理解 实现单向和双向链表的反转 实现把链表中给定的值都删除 小结 认识链表结构 单向链表 单链表在内存中的表示: 可以看到,一个链表的节点包含数据域和指向下一个节点的引用,链表最后一个节点指向null(空区域). 我们可以根据这一定义,用Java语言表示一下单向链表的结构: public class Node { public int value; public Node next; public Node(int value) { thi

  • Java构建对象常用3种方法解析

    前言 当我们面对具有大量可选成员变量的 Java 类时,创建这些对象的最佳方法是什么?通常有三种方法: 伸缩构造函数,JavaBean模式和构建器模式. 构造函数 UserInfo userInfo1 = new UserInfo("felord.cn", 28); UserInfo xxxxxx = new UserInfo("felord.cn", "xxxxxx", 28); UserInfo xxxxxx1 = new UserInfo(

  • JAVA多线程间通讯常用实现方法解析

    如何实现线程间通讯,有如下三种方法: 1.使用Semaphore (信号量)类来控制线程的等待和释放 功能:三个线程 a .b .c 并发运行,b,c 需要 a 线程的数据怎么实现 分析:考虑到多线程的不确定性, 因此我们不能确保 ThreadA 就一定先于 ThreadB 和 ThreadC 前执行,就算 ThreadA先执行了, 我们也无法保证 ThreadA 什么时候才能将变量 num 给初始化完成. 因此我们必须让 ThreadB 和 Thread去等待 ThreadA 完成任何后发出的

  • Sentry错误日志监控使用方法解析

    无论作为新手还是老手程序员在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试.生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了.一般我们都是在错误发生一段时间后,错误信息才会传递到开发人员那里,然后一顿操作查看程序运行的日志,就熟练使用awk和grep去分析日志,但是往往我们会因为日志中缺少上下文关系,导致很难分析真正的错误是什么. Sentry由此应运而生成为了解决这个问题的一个很好的工具,设计了诸多特性帮助开发者更快.更方面.更直观的监控错误信息. 关于日志管理

  • Java多线程及线程安全实现方法解析

    一.java多线程实现的两种方式 1.继承Thread /** * * @version: 1.1.0 * @Description: 多线程 * @author: wsq * @date: 2020年6月8日下午2:25:33 */ public class MyThread extends Thread{ @Override public void run() { System.out.println("This is the first thread!"); } public s

  • java统计字符串单词个数的方法解析

    在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 不说废话了直接贴代码: 实现代码: /** * 统计各个单词出现的次数 * @param text */ public static void findEnglishNum(String text){ //找出所有的单词 String[] array = {".", " ", "?", "!"}; for (int

随机推荐