简单一致的Log4j2 Logger命名

在带有Java 7方法句柄的可移植记录器名称一文中 ,我写了关于使用Java 7的方法句柄来命名类的记录器的文章。 我在那篇文章中说过,这种方法的优点包括记录器命名的一致性,避免了意外的代码复制和粘贴,这可能会导致将不同的类名用作记录器名称。 在这篇文章中,我看看如何Log4j的2提供了一种方法实现这些同样的好处。

Log4j 2可以识别基于类名的记录器命名方法。 Log4j 2手册中 “ Log4j 2 API ”页面的“ Logger Names ”部分指出:“在大多数情况下,应用程序通过将当前类的名称传递给LogManager.getLogger来命名其记录器。 因为这种用法非常普遍,所以Log4j 2提供了它作为记录器名称参数被省略或为空时的默认值。”

以下非常简单的Calculator类演示了此过程,即使用无参数LogManager创建一个Logger 。 getLogger()调用。 因为没有参数传递给getLogger()方法,所以记录器将以创建Logger的类命名。 方法LogManager.getLogger()的Javadoc注释确认了此行为:“返回带有调用类名称的Logger。”

计算器.java

package dustin.examples.log4j;import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;import java.util.Arrays;/*** Simple calculator class that is intended more for demonstration* of Log4j2 than for calculating anything.*/
public class Calculator
{private static final Logger logger = LogManager.getLogger();public String getLoggerName(){return logger.getName();}/*** Add the provided operands together and provide their sum.** @param operands Operands to be added together.* @return Sum of the provided operands.*/public long add(final long ... operands){long sum = 0;for (final long operand : operands){sum += operand;}logger.debug("The sum of " + Arrays.toString(operands) + " is " + sum);return sum;}
}

通过如上所示实现Calculator类,可以通过调用Logger.getName()来获得该类的记录器名称,如Calculator方法getLoggerName()所示,该名称是“ dustin.examples.log4j.Calculator”。 尽管此处未显示,但使用无参数LogManager.getFormatterLogger()检索的Logger也将使用“调用类的完全限定名称作为Logger名称。”

结论

假设选择的记录器命名方案使用完全合格的程序包和类名,则本文中讨论和演示的Log4j 2方法易于使用,并且易于使用一致且正确的记录器名称。 这种方法比命名记录器的方法处理方法更简短,甚至更具可读性,但是该方法特定于Log4j 2,而该方法处理方法可以与多个日志记录框架和库一起使用。

翻译自: https://www.javacodegeeks.com/2015/10/easy-and-consistent-log4j2-logger-naming.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三周总结 类、对象、包

1.面向对象的特征有哪些?封装、继承、多态、(抽象)2.一个“.java”文件中是否可以有多个类(不是内部类)?有什么限制吗?可以有多个类,但是public的类只有一个,而且必须和j…

java服务器崩溃的原因_请求大神帮忙分析一下服务器崩溃原因

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼---- Minecraft Crash Report ----// Who set us up the TNT?Time: 14-6-11 上午12:52Description: Exception in server tick loopjava.lang.NoClassDefFoundError: scala/collection/Seqat java.lang.Class.forName0(Native Met…

VBA_Excel_教程:过程,函数

Sub s1()Debug.Print "s1"调用过程:无括号,加call提升可读性s2Call s2 End SubSub s2()Debug.Print "s2" End Sub 函数当过程用完全没有问题 Function f1()Debug.Print "f1"f2Call f2 End FunctionFunction f2()Debug.Pri…

java同步方法的特点_java多线程有哪些优点?同步实例代码展示

在我们的日常学习当中会发现java的知识点是总是息息相关的,可以串联起来。java中多线程的有关内容可以衍生出更多知识,它的优缺点也是非常明显的。你都了解吗?一起来看看吧。首先为大家介绍一下,多线程(多个线程同时运行)程序的优缺点优点&a…

使用JUnit规则进行干净的集成测试

JUnit Rules的优势,尤其是在进行集成测试时,几乎不能被高估。 在本文中,我们将阐明ExternalResource扩展的有用性。 在我们必须使用抽象外部资源的第三方库的情况下,这些简化了灯具控制。 作为示例,我们将看看如何基于…

FreeRTOS--API函数

FreeRTOS--API函数转载于:https://www.cnblogs.com/LittleTiger/p/6128708.html

java fx 内置图标_图标 – 如何在Windows上为javafx本机程序包图标设置自定义图标...

我正在尝试创建exe文件的图标,同时创建javafx包装的本机捆绑.我尝试将图标添加到pom.xml中,但直到它不会为我工作,因为它提供了默认图标使用包含Pom.xml的Intellij IDEA IDE,通过command mvn jfx:build-native创建包这是我的pom.xml:com.zenjavajavafx-…

winform基础窗体设置及基础控件

WinForm - 也叫做C/S 客户端 另:B/S是 网页端 客户端应用程序 - 是需要安装在用户电脑上才可以使用的程序 特点: 不需要联网也可以打开使用部分功能,但是现在的情况是许多功能依然需要互联网的支持,代码部分在用户电脑上执行 使用…

java排序两个数组_java – 如何相对于彼此排序两个数组.

由于这两个值紧密耦合在一起,我实际上会编写一个自定义类来包含信息,然后对这些类进行排序,而不是使用原始数组.这样做会让你对许多可能的错误开放.这样可以更好地控制,数据封装以及将来可能包含哪些方法或数据的扩展.public class MyDistance implements Comparable {private …

【FastJSON】解决FastJson中“$ref 循环引用”的问题

0、开发环境 SSH&#xff0c;EasyUI&#xff0c;MySQL 1、需求要求&#xff1a; (1)首先获取所有的贷款订单数据&#xff0c;即List <LoanOrder>。 (2)然后从单个贷款订单实体LoanOrder去访问贷款人实体Loaner的信息。 2、实体之间的关系描述 (1)LoanOrder实体与Loaner…

java 枚举内嵌枚举_Java枚举益智游戏

java 枚举内嵌枚举假设我们有以下代码&#xff1a; enum Case {CASE_ONE,CASE_TWO,CASE_THREE;private static final int counter;private int valueDependsOnCounter;static {int sum 0;for(int i 0; i<10; i) {sum i;}counter sum;} Case() {this.valueDependsOnCounte…

Java注释 link_Java 文档注释

Java只是三种注释方式。前两种分别是// 和/* */&#xff0c;第三种被称作说明注释&#xff0c;它以/** 开始&#xff0c;以 */结束。说明注释允许你在程序中嵌入关于程序的信息。你可以使用javadoc工具软件来生成信息&#xff0c;并输出到HTML文件中。说明注释&#xff0c;是你…

JavaFX真实世界应用程序:EIZO CuratOR Caliop

JavaFX Real-World应用程序第四号称为Caliop 。 它是EIZO为医院手术室开发的CuratOR解决方案的前端。 前端在壁挂式控制台上运行&#xff0c;并允许操作团队查找有关患者的信息&#xff0c;控制各种视频源到不同监视器的路由&#xff0c;录制视频&#xff0c;拍摄照片/剧照。 …

约瑟夫问题(java实现)

方法一、自定义的链表实现package com.code.yuesefu;public class YueSeFuList {public static void main(String[] args) {int count 41;//申请一个指定长度的链表Node n YueSeFuList.createNodes(count);for(int i0;i<count;i){Node second n.next;//第2个n n.next.ne…

java多线程流式写入文件夹_java多线程写入同一文件

1.[代码][Java]代码package com.thread;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.concurrent.ConcurrentLinkedQueue;/*** 多线程下写文件* author owen.huang**//*** 将要写入…

Duilib嵌入CEF以及JavaScript与C++交互

转载:http://blog.csdn.net/foruok/article/details/50573612 转载:http://blog.csdn.net/foruok/article/details/50584985 转载:http://blog.csdn.net/mfcing/article/details/44539035 转载:https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_JavaScript_Cpp.md 转…

layui分页limit不显示_【图片】新手 分页显示不了呀【layui吧】_百度贴吧

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼$(function () {layui.use([table, layer], function () {layer layui.layer, layuiTable layui.table;tabSalesList layuiTable.render({elem: "#JFTZTJ",totalRow: true,url: /DailyRoutine/MembershipManagement/O…

netbeans代码提示_NetBeans可用性提示

netbeans代码提示的Java IDE都来了&#xff0c;因为在很长的路要走天的JBuilder的 &#xff08;尽管JBuilder中似乎是一个值得欢迎提前在时间&#xff09;。 当今的Java IDE&#xff08;例如NetBeans &#xff0c; Eclipse &#xff0c; IntelliJ IDEA和JDeveloper &#xff09…

推荐文章:机器学习:“一文读懂机器学习,大数据/自然语言处理/算法全有了...

PS:文章主要转载自CSDN大神"黑夜路人"的文章: http://blog.csdn.NET/heiyeshuwu/article/details/43483655 本文主要对机器学习进行科普,包括机器学习的定义、范围、方法,包括机器学习的研究领域&#xff1a;模式识别、计算机视觉、语音识别、自然语言…

java比较炫的登录界面_html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面...

承蒙各位小伙伴的支持&#xff0c;鄙人有幸入围了《CSDN 2020博客之星》的前200名&#xff0c;现在进入投票环节&#xff0c;如果我平时写的文章和分享对你有用的话&#xff0c;请每天点击一下这个链接&#xff0c;投上你们宝贵的一票吧&#xff01;谢谢&#xff01;❤️ 每一票…