南昌企业建站系统,购物网站建设目标,如何查询网站建设者,小程序平台开发多少钱log4j2 logger在“ 带有Java 7方法句柄的可移植记录器名称”一文中 #xff0c;我写了关于使用Java 7的方法句柄来命名类的记录器的文章。 我在那篇文章中说过#xff0c;这种方法的优点包括记录器命名的一致性#xff0c;并避免了意外的代码复制和粘贴#xff0c;这可能导… 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.htmllog4j2 logger