java-logback获取方法名称

LiuYanYGZ      2022-04-11     188

关键词:


 

 

 

 

java - Logback获取方法名称

技术分享图片

摘自: https://blog.csdn.net/qq853632587/article/details/78222780

我们目前正在从 Log4J 迁移到 Logback,但是在获取触发日志的"原"方法名称时遇到了问题。

我叫它"原",因为我们有一个集中的记录器类( 隐藏和操作某些日志) 和日志中显示的方法名称。

在 Log4J 中,我们能够正确获取"原"方法名。

Logback是否能够获得它?

记录器参数:

Log4J

<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss,SSS} %5p [%F] - %M() - %m%n"/>

Logback

<pattern>%d{"dd-MM-yyyy HH:mm:ss,SSS"} %-5level [%logger - %M] - %msg%n</pattern>

结果:( 方法名称- 类名)

Log4J

doLogTester1 - a.Tester1  doLogTester2 - b.Tester2  doLogTester1 - a.Tester1  doLogTester2 - b.Tester2 

Logback

processLog - a.Tester1  processLog - b.Tester2  processLog - a.Tester1  processLog - b.Tester2 

编辑 - 完整示例

Main.java

public class Main { private static final LoggerCommon logger = new LoggerCommon(Main.class); public static void main(String[] args) {  logger.doLog("I‘m on the Main class in the main method"); } }

LoggerCommon

log4j

import org.apache.log4j.Level; import org.apache.log4j.Logger; public class LoggerCommon { private static Logger logger; public LoggerCommon(Class<?> c) {  logger = Logger.getLogger(c); } public void doLog(String message) {  logger.log(LoggerCommon.class.getName(), Level.INFO, message, null); } }

logback

import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerCommon { private Logger logger; public LoggerCommon(Class<?> c) {  logger = LoggerFactory.getLogger(c); } public void doLog(String message) {  logger.info(message); } }

config配置

log4j

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CA" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%M - %F - %m%n"/> </layout> </appender> <root> <level value="debug"/> <appender-ref ref="CA"/> </root> </log4j:configuration>

logback

<configuration> <appender name="CA" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%M - %logger - %msg %n</pattern> </encoder> </appender> <root level="TRACE"> <appender-ref ref="CA"/> </root> </configuration>

 


如何从 HttpRequestMessage 中获取方法名称?

】如何从HttpRequestMessage中获取方法名称?【英文标题】:HowtogetmethodnamefromHttpRequestMessage?【发布时间】:2021-11-2608:21:04【问题描述】:我有如下处理程序,我想从Controller获取方法名称。使用varmethodName=request.Method;只返回“GET”或... 查看详情

如何使用反射获取调用方法名称和类型? [复制]

】如何使用反射获取调用方法名称和类型?[复制]【英文标题】:HowdoIgetthecallingmethodnameandtypeusingreflection?[duplicate]【发布时间】:2011-03-0623:00:57【问题描述】:可能重复:HowcanIfindthemethodthatcalledthecurrentmethod?我想写一个方法来获... 查看详情

获取数据的方法名称[关闭]

】获取数据的方法名称[关闭]【英文标题】:Methodnamesforgettingdata[closed]【发布时间】:2011-01-0915:41:20【问题描述】:警告:这是我发布的一个不太严重的问题/讨论......但我敢打赌,大多数开发人员已经考虑过这个“问题”......一... 查看详情

dedecms获取顶级栏目名称二级栏目名称实现方法转

织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:fieldname=‘typename‘/}可以获取当前栏目页上一级栏目的名称,而不是当前栏目... 查看详情

动态获取当前方法名称的更短方法[重复]

】动态获取当前方法名称的更短方法[重复]【英文标题】:Shortermethodforgettingthenameofthecurrentmethoddynamically[duplicate]【发布时间】:2012-11-1613:35:04【问题描述】:我正在寻找一种无需创建空白对象即可获取当前方法名称的方法。有没... 查看详情

使用表达式获取方法的名称

】使用表达式获取方法的名称【英文标题】:Getthenameofamethodusinganexpression【发布时间】:2012-01-0317:57:28【问题描述】:我知道网站上有一些关于这个的答案,如果这有任何重复,我深表歉意,但我发现的所有答案都没有做我想做... 查看详情

获取方面的“方法参数”的名称? (方面J)

】获取方面的“方法参数”的名称?(方面J)【英文标题】:Getthenameofthe"methodargument"inaspect?(AspectJ)【发布时间】:2017-12-2706:46:30【问题描述】:如何获取方面的参数名称,例如,如果我的方法是test(SamplesampleDto),我需要... 查看详情

java示例代码_获取包含注释的方法名称

java示例代码_获取包含注释的方法名称 查看详情

从 Hashmap put() 中获取调用方法名称的列表

】从Hashmapput()中获取调用方法名称的列表【英文标题】:Getthelistofinvokingmethodname\'sfromHashmapput()【发布时间】:2020-07-3121:08:52【问题描述】:您能帮我从HashMapput方法中获取列表方法名称吗?Bookbook=newBook();book.setTitle("TheLittlePrince");... 查看详情

获取导致异常的表单名称、方法名称和更多详细信息

】获取导致异常的表单名称、方法名称和更多详细信息【英文标题】:GetFormName,MethodNameandMoreDetailsthatcausedtheexception【发布时间】:2014-01-1705:45:40【问题描述】:我正在尝试使用Program.cs文件中的以下代码来捕获未处理的异常。我... 查看详情

您可以从 PHP 中的方法中获取方法名称吗?

】您可以从PHP中的方法中获取方法名称吗?【英文标题】:CanyougetamethodnamefromwithinamethodinPHP?【发布时间】:2010-11-2807:58:42【问题描述】:有可能做这样的事情吗?publicfunctionsomething()$thisMethodName=method_get_name();method_get_name()在哪里... 查看详情

如何获取调用别名方法的名称?

】如何获取调用别名方法的名称?【英文标题】:Howtogetthenameofthecallingaliasmethod?【发布时间】:2014-07-1111:25:51【问题描述】:我有一个名为link_to_admin的方法,然后我为另一个名为simple_link_to的方法起别名deflink_to_admin(name,url,options... 查看详情

Hibernate SQLQuery - 按名称获取对象

】HibernateSQLQuery-按名称获取对象【英文标题】:HibernateSQLQuery-GetObjectbyname【发布时间】:2014-11-0911:12:38【问题描述】:我有一个通过“id”获取类别的方法,我需要一个类似的方法来通过“名称”获取类别。我通过使用Hibernate完... 查看详情

FluentNHibernate - 映射时获取实体名称。当前方法已过时

】FluentNHibernate-映射时获取实体名称。当前方法已过时【英文标题】:FluentNHibernate-Gettingtheentitynamewhenmapping.Currentmethodbeingmadeobsolete【发布时间】:2011-06-0813:01:52【问题描述】:我目前通过使用AutoMappingOverride将表的名称设置为实... 查看详情

在 TypeScript 中获取类方法的名称

】在TypeScript中获取类方法的名称【英文标题】:GetnameofclassmethodinTypeScript【发布时间】:2016-11-0206:08:27【问题描述】:对于查看此问题的任何人,此问题类似于以下内容:HowdoIgetthenameofanobject\'stypeinJavaScript?Getanobject\'sclassnameatrunt... 查看详情

如何获取在 testng 拆卸方法中运行的测试方法的名称?

】如何获取在testng拆卸方法中运行的测试方法的名称?【英文标题】:HowdoIgetthenameofthetestmethodthatwasruninatestngteardownmethod?【发布时间】:2011-02-2611:43:58【问题描述】:基本上,我有一个拆卸方法,我想登录到刚刚运行测试的控制... 查看详情

如何在OnExceptionAsync c#中获取引发异常的方法名称[重复]

】如何在OnExceptionAsyncc#中获取引发异常的方法名称[重复]【英文标题】:HowtogetthemethodnamethatoriginatedtheexceptioninOnExceptionAsyncc#[duplicate]【发布时间】:2021-12-0421:50:46【问题描述】:我试图在我的异常过滤器中获取源自异常的方法名... 查看详情

springdata-按方法名称获取单列查询

我创建了一个方法,通过spring数据自动创建查询。问题是关于返回参数,因为与名称定义不匹配。实际上,通过仅指定一个参数,它返回4个参数。springData方法是:Optional<Comunicazioni>getCommIDByExtIDAndCommSAndCommT(BigDecimalextID,Stringc... 查看详情