logback的Logger之上封装了一层,如何打印正确的行号?

问题描述

由于某些变量要频繁打印,而我又不想每次都用logger.info函数来一个一个地打印这些变量,于是我用一个新的类封装了Logger,例如:publicstaticclassMyLogger{Loggerlogger=...publicstaticvoidinfo(Stringmsg,String...args){...}}但是运行MyLogger.info的时候打印出来的行号却是MyLogger类中的info函数的所在行的行号。我想打印出真实的行号,除了修改logback源码或者以下网址所说的直接对log4j的log函数进行封装的方法(http://www.coderli.com/log4j-slf4j-logger-linenumber/),还有没有什么更简单易行的方法?或者对于“某些变量要频繁打印”这种需求,有没有其他的办法?(不一定用logback)

解决方案

解决方案二:
抛出一个异常,取得调用函数中的行号,把异常给捕捉publicvoidfoo(){Exceptionex=newRuntimeException();StackTraceElementelement=ex.getStackTrace()[0];System.out.println(element.getLineNumber());}

时间: 2024-10-26 05:21:56

logback的Logger之上封装了一层,如何打印正确的行号?的相关文章

在ios iphone编程中使用封装的NSLog来打印调试信息

使用NSLog的一个风险是:它的运行会占用时间和设备资源. 简单而粗暴的解决方案是:在release前,将所有的NSLog注释掉.简单有效,但副作用是:下次你要调试时,又得将NSLog一个个取消注释. 以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能. 解决步骤: 修改<AppName>-Prefix.pch ,增加以下的宏代码 [cpp] view plaincopy #ifdef DEBUG   # define DLog(fmt,

Oracle SQL

1         Oracle简介 一个 Oracle 服务器: 是一个数据管理系统(RDBMS),它提供开放的, 全面的, 近乎完整的信息管理 由一个 Oracle 实例 和一个 Oracle 数据库组成 Oracle 数据库 和 Oracle 实例 Oracle 服务器由两大部分组成, Oracle 数据库 和 Oracle 实例. Oracle 数据库: 位于硬盘上实际存放数据的文件, 这些文件组织在一起, 成为一个逻辑整体, 即为 Oracle 数据库. 因此在 Oracle 看来,

点评五款用于 Linux 编程的内存调试器

点评五款用于 Linux 编程的内存调试器 Credit: Moini 作为一个程序员,我知道我肯定会犯错误--怎么可能不犯错!程序员也是人啊.有的错误能在编码过程中及时发现,而有些却得等到软件测试了才能显露出来.然而,还有一类错误并不能在这两个阶段被解决,这就导致软件不能正常运行,甚至是提前终止. 如果你还没猜出是那种错误,我说的就是和内存相关的错误.手动调试这些错误不仅耗时,而且很难发现并纠正.值得一提的是,这种错误很常见,特别是在用 C/C++ 这类允许手动管理内存的语言编写的软件里. 幸

封装SLF4J/Log4j,不再处处定义logger变量

自从开始使用日志组件后, 每个类都是这样子的结构: public class A {    public static final Logger logger = LoggerFactory.getLogger(A.class);    }   这是一件相当烦人事,必须对他进行封装,使得我们能够通过这样的方法来调用: public class A {      public void methodA() {          Logger.debug("Nice!");      } 

slf4j与jul、log4j1、log4j2、logback的集成原理

1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j.jcl.jul.log4j1.log4j2.logback大总结 2 slf4j 先从一个简单的使用案例来说明 2.1 简单的使用案例 private static Logger logger=LoggerF

jcl与jul、log4j1、log4j2、logback的集成原理

1 系列目录 jdk-logging.log4j.logback日志介绍及原理 jcl与jul.log4j1.log4j2.logback的集成原理 slf4j与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j.jcl.jul.log4j1.log4j2.logback大总结 前面介绍了jdk自带的logging.log4j1.log4j2.logback等实际的日志框架 对于开发者而言,每种日志都有不同的写法.如果我们以实际的日志框架来进行编写,代码就限

基于AFNetworking封装网络库

阅读原文 基于AFNetworking封装网络库 对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口.很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了. 对于使用AFNetworking的朋友来说,很多朋友都是直接调用AFNetworking的API,这样不太好,无法做到全工程统一配置. 最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNetworking的API,必须调用我们自己封装的一层,如此一来

绑定日志-maven jetty 环境下的Web项目在使用logback slf4j时,slf4j总是绑定java.util.logging

问题描述 maven jetty 环境下的Web项目在使用logback slf4j时,slf4j总是绑定java.util.logging Logger logger = (Logger) LoggerFactory.getLogger(UserAction.class); logger.info("loginUser:username{},password{}",username,password); java.lang.ClassCastException: org.slf4j.

logback与Spring、SpringMVC结合使用教程(转) logback good

        摘要:本文主要介绍了如何在spring.springMVC中使用logback 一.logback与Spirng结合使用 1.maven添加引用:   [html] view plain copy     <dependency>       <groupId>log4j</groupId>       <artifactId>log4j</artifactId>       <version>${log4j.vers