在带有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

简单一致的Log4j2 Logger命名相关推荐

  1. log4j2 logger_简单一致的Log4j2 Logger命名

    log4j2 logger 在" 带有Java 7方法句柄的可移植记录器名称"一文中 ,我写了关于使用Java 7的方法句柄来命名类的记录器的文章. 我在那篇文章中说过,这种方法的 ...

  2. 自定义python框架_python 简单日志框架 自定义logger

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 通常我们在构建 python 系统时,往往需要一个简单的 logging 框架.python 自 ...

  3. [有机化学] 简单有机物的英文命名法

    简单有机物的英文命名法 发一篇化学的文章 索引 简单有机物的英文命名法 一. 简单烷烃的英文命名法 二. 通用的烃(及其衍生物)英文命名法 2.1 烷烃及其取代物的英文命名 2.1.1 词头 2.1. ...

  4. 教你用简单几个步骤快速重命名文件夹名

    文件夹重命名是一个很简单的电脑公办常用的工具,选中文件右击,选择重命名,一两个文件夹确定可以这样做,那如果文件夹多个的情况下,你还这样重命名文件夹名的话就费时费力了.所以就需要辅助工具来帮忙.下面就为 ...

  5. log4j配置_是时候了解一下log4j2各种配置的含义了!

    来源:http://i7q.cn/54K3Uw 1.日志框架 日志接口(slf4j) slf4j是对所有日志框架制定的一种规范.标准.接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具 ...

  6. Spring Boot Log4j2 日志学习

    简介 Java 中比较常用的日志工具类,有: Log4j. SLF4j. Commons-logging(简称jcl). Logback. Log4j2(Log4j 升级版). Jdk Logging ...

  7. Log4j2架构分析与实战

    为什么80%的码农都做不了架构师?>>>    1 系列目录 2种日志接口框架,4种日志实现框架 jdk-logging.log4j.logback日志介绍及原理 jcl与jul.l ...

  8. .NET 程序测试 Java 项目 log4j2 是否存在远程代码执行漏洞

    最近两天被朋友圈的"Apache Log4j2 远程代码执行漏洞"刷屏了,主要是因为组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求 ...

  9. java logging 格式化_java.util.logging.Logger使用详解 (转)

    各级别按降序排列如下: SEVERE(最高值) WARNING INFO CONFIG FINE FINER FINEST(最低值) 此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL ...

最新文章

  1. MATLAB之相关函数
  2. hook_theme 的重要性
  3. 全国计算机等级考试题库二级C操作题100套(第21套)
  4. 2018届校招面经精选
  5. mysql saveorupdate_Mybatis SaveOrUpdate插件
  6. Jsp和Servlet有什么区别?
  7. Linux中的静态库和动态库简介及生成过程示例
  8. 员工端电脑重装系统或者更换电脑处理方法
  9. 需求文档(PRD)撰写指南
  10. 如何在Excel中快速删除空白行
  11. 功率谱估值方法matlab仿真——2、经典估值方法介绍
  12. Windows 10x64 Pro Modified By Michael
  13. 掌握正确的指法---击键要领、雨儿五笔打字视频
  14. win10系统图片显示缩略图
  15. iOS如何转让 App 给公司或个人
  16. 计算机软件著作权的保护对象是什么
  17. eclipse中项目中的包结构显示问题
  18. 卡尔曼滤波原理及代码
  19. 计算机一级操作题文档,全国计算机一级EXCEL操作题
  20. “二维码扫描器-客户端

热门文章

  1. C++描述杭电OJ 2016. 数据的交换输出 ||
  2. java实现人脸识别源码【含测试效果图】——Service层(IUserService)
  3. python cmd闪退_使用cmd python模块时,如何使程序正常崩溃?
  4. pythonnumpy教程_Python教程:numpy的基本介绍
  5. 自我审视记录本_春天重新审视战略模式
  6. aws ec2 跨帐号共享_AWS共享资源的警告
  7. oracle 容器运行_Oracle应用容器云的自由
  8. 从Speedment 3.0.17或更高版本的事务轻松返回值
  9. junit5和junit4_JUnit 5符合AssertJ
  10. std::tostring_枚举:如何正确使用name()和toString()方法