java - Logback获取方法名称
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获取方法名称的更多相关文章
- java 反射获取方法返回值类型
//ProceedingJoinPoint pjp //获取方法返回值类型 Object[] args = pjp.getArgs(); Class<?>[] paramsCls = ne ...
- java反射-获取方法信息
例子代码如下: package com.reflect; import java.lang.reflect.Method; public class ClassUtill { /* * 打印类的信息, ...
- java 反射借助 asm 获取参数名称最优雅简单的方式
背景说明 最近写反射相关的代码,想获取对应的参数名称,却发现没有特别好的方式. jdk7 及其以前,是无法通过反射获取参数名称的. jdk8 可以获取,但是要求指定 -parameter 启动参数,限 ...
- Java反射之方法反射demo
package reflect; import java.lang.reflect.Method; public class ClassDemo3 { public static void main( ...
- java获取当前运行的方法名称
// 这种方式获取的话,数组的第一个元素是当前运行方法的名称,第二个元素是调用当前方法的方法名称 StackTraceElement[] stackTrace = new Exception().ge ...
- 第五课 JAVA反射获取对象属性和方法(通过配置文件)
Service1.java package reflection; public class Service1 { public void doService1(){ System.out.print ...
- java 反射机制之 getDeclaredMethod()获取方法,然后invoke执行实例对应的方法
关于反射中getDeclaredMethod().invoke()的学习,来源于项目中的一行代码: SubjectService.class.getDeclaredMethod(autoMatchCo ...
- “全栈2019”Java多线程第四章:设置和获取线程名称
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 牛客网Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器
不多说,直接上干货! 获取文件名称.获取文件路径.获取文件大小.获取文件修改时间 FileMethodDemo.java package zhouls.bigdata.DataFeatureSelec ...
随机推荐
- win键盘映射成mac键盘
在win7系统下安装了mac虚拟机,mac的快捷键与win的键盘不一样,所以ctrl+c,ctrl+v都用不了,于是找方法映射. 搜索到 keyremap4macbook,,进到官网Karabiner ...
- SCARA——OpenGL入门学习一、二
参考博客:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 简介 最近开始一个机械手臂的安装调试,平面关节型机器人又称SCA ...
- call()方法和apply()方法用法总结
1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...
- 【转】Python自动化测试 (一) Eclipse+Pydev 搭建开发环境
原文网址:http://www.cnblogs.com/TankXiao/archive/2013/05/29/3033640.html C#之所以容易让人感兴趣,是因为安装完Visual Studi ...
- 控制台执行CI方法
执行方法:进入到ci放入口文件目录 执行 php index.php 控制器 方法 #php index.php home index
- os模块sys模块-sys.argv命令行参数
提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于s ...
- 接口规范,js处理json,php返回给ajax的数据格式
ajax异步获取php数据. 一般php会在后台处理请求,并返回结果给前端. 必须是echo的方式,不然ajax获取不到. 返回的类型包括,字符串,数字,json. 最常用的就是json. 返回后,前 ...
- MySQL 优化器
(system@127.0.0.1:3306) [trunk]> show variables like '%performance_sch%';+----------------------- ...
- dd命令的高级应用
dd是Linux上的一个常用的命令.例如:dd if=/1.txt of=/tmp/2.txt (其中, if代表input file:of代表output file, 命令的结果就是将根目录 ...
- KMP算法详解(转)
转自http://www.matrix67.com/blog/archives/115 通常我们的方法是枚举从A串的什么位置起开始与B匹配,然后验证是否匹配.假如A串长度为n,B串长度为m,那么这种方 ...