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>

java - Logback获取方法名称的更多相关文章

  1. java 反射获取方法返回值类型

    //ProceedingJoinPoint pjp //获取方法返回值类型 Object[] args = pjp.getArgs(); Class<?>[] paramsCls = ne ...

  2. java反射-获取方法信息

    例子代码如下: package com.reflect; import java.lang.reflect.Method; public class ClassUtill { /* * 打印类的信息, ...

  3. java 反射借助 asm 获取参数名称最优雅简单的方式

    背景说明 最近写反射相关的代码,想获取对应的参数名称,却发现没有特别好的方式. jdk7 及其以前,是无法通过反射获取参数名称的. jdk8 可以获取,但是要求指定 -parameter 启动参数,限 ...

  4. Java反射之方法反射demo

    package reflect; import java.lang.reflect.Method; public class ClassDemo3 { public static void main( ...

  5. java获取当前运行的方法名称

    // 这种方式获取的话,数组的第一个元素是当前运行方法的名称,第二个元素是调用当前方法的方法名称 StackTraceElement[] stackTrace = new Exception().ge ...

  6. 第五课 JAVA反射获取对象属性和方法(通过配置文件)

    Service1.java package reflection; public class Service1 { public void doService1(){ System.out.print ...

  7. java 反射机制之 getDeclaredMethod()获取方法,然后invoke执行实例对应的方法

    关于反射中getDeclaredMethod().invoke()的学习,来源于项目中的一行代码: SubjectService.class.getDeclaredMethod(autoMatchCo ...

  8. “全栈2019”Java多线程第四章:设置和获取线程名称

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. 牛客网Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器

    不多说,直接上干货! 获取文件名称.获取文件路径.获取文件大小.获取文件修改时间 FileMethodDemo.java package zhouls.bigdata.DataFeatureSelec ...

随机推荐

  1. verilog数组定义及其初始化

    这里的内存模型指的是内存的行为模型.Verilog中提供了两维数组来帮助我们建立内存的行为模型.具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问.这 ...

  2. LA2218 Triathlon

    题意 PDF 分析 设出长度\(x,y,1-x-y\),就是关于它们的二元一次不等式,判断有没有解. 可以用半平面交来解决. x/V[i]+y/U[i]+(1-x-y)/W[i] < x/V[j ...

  3. gradle wrapper 简单使用

    其实就是对于gradle 的一个包装,保证了项目版本的一致,同时减少配置   1. 生成wrapper // 使用gradle wrapper 命令 gradle wrapper 输出效果如下: [r ...

  4. SQL TINYINT 1 讨论记录

    SQL TINYINT 1 讨论记录 群里有一位小伙伴又和他上司怒上了,关于 TINYINT 1 的问题. 这里记录一下,TINYINT 无符号可以是 0~255,而这里的 长度 1只是长度,并不是存 ...

  5. bzoj 1085 [SCOI2005]骑士精神——IDA*

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 迭代加深搜索. 估价函数是为了预计步数来剪枝,所以要优于实际步数. 没错,不是为了确定 ...

  6. etcd使用经历

    etcd是一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现.etcd与zookeeper相比算是轻量级系统,两者的一致性协议也一样,etcd的raft比zookeeper的pax ...

  7. 1021. Deepest Root (25)——DFS+并查集

    http://pat.zju.edu.cn/contests/pat-a-practise/1021 无环连通图也可以视为一棵树,选定图中任意一点作为根,如果这时候整个树的深度最大,则称其为 deep ...

  8. Linux盘符漂移问题

    Linux管理多块磁盘时(以sata盘为例),会按磁盘加载的顺序依次给磁盘命名为/dev/sda, /dev/sdb... 这种命名规则就会导致,一块磁盘在发生热插拔或系统重启后,盘符可能发生变化,会 ...

  9. Linux:远程连接 SSH

    一.认识 SSH 定义 SSH(Secure shell):安全外壳协议:是建立在应用层基础上的安全协议: 通过 SSH 进行服务端连接,不容易被窃取信息: 连接服务器 ssh 服务器名 + @ + ...

  10. java实例三维空间求点之间的距离。。。。

    package com.b; public class Ponit { private double x; private double y; private double z; public Pon ...