使用log4j,如何显示exception的详细内容

本文介绍如何利用Log4j框架记录程序中的异常信息,并通过配置logger.properties文件来指定异常输出的位置及格式。同时,文章提供了示例代码,展示了如何在Java程序中使用Log4j的error方法记录带有堆栈跟踪的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就像printStackTrace()方法一样。
我在想,Exception还有printStackTrace(PrintStream s)和printStackTrace(PrintWriter s)两个方法,是不是logger有什么组件是可以作为writer来接受输出流的?
请大虾赐教啊!
---------------------------------------------------------------
先下相关的JAR包,设置好CLASSPATH。

import org.apache.log4j.PropertyConfigurator ; 
import org.apache.log4j.Logger ; 
public class A //你的CLASS//
{
  static Logger logger = Logger.getLogger(A.class.getName()); 

  try
{ PropertyConfigurator.configure( "logger.properties" );
//你的代码

}
catch(Exception e)
{logger.info(e);
}
}
在logger.properties中配置相关的文件。
---------------------------------------------------------------
logger的error,warn,debug,info方法均可接收两个参数,Exception要作为第二个参数传入才可打印:

...
catch(Exception e)
{
    logger.error("error", e);
    //or
    //logger.warn("warn", e);
}
...

error方法的说明:
public void error(Object message,
                  Throwable t)
Log a message object with the ERROR level including the stack trace of the Throwable t passed as parameter. 

See error(Object) form for more detailed information.

Parameters:
    message - the message object to log.
    t - the exception to log, including its stack trace.

 

该文章转载自1024k:http://www.1024k.cn/faq/2007/200704/22832.html 

### 在 Android 中使用 log4j 进行日志记录的方法与配置 虽然 `log4j` 并不完全针对移动设备设计,但在某些情况下仍然可以将其用于 Android 应用程序开发。以下是关于如何在 Android 上集成并正确配置 `log4j` 的详细说明。 --- #### 1. 导入依赖库 为了使 `log4j` 支持 Android 环境下的日志记录操作,需导入专门适配该平台版本的 jar 文件——即 **android-logging-log4j**[^1] 。通常可通过 Maven 或 Gradle 构建工具完成自动下载安装过程: ```gradle dependencies { implementation 'de.mindpipe.android:android-logging-log4j:1.0.3' } ``` 如果项目未采用现代构建系统,则手动获取对应 JAR 包后放置于工程 libs 目录下即可[^2]。 --- #### 2. 初始化 Logger 实例对象 接下来需要初始化 logger 对象以便后续调用打印函数。一般建议放在 Application 类里统一处理一次就够了: ```java import android.app.Application; import org.apache.log4j.Logger; public class MyApplication extends Application { private static final Logger LOGGER = Logger.getLogger(MyApplication.class.getName()); @Override public void onCreate() { super.onCreate(); configureLogger(); // 调用自定义方法加载属性文件 } private void configureLogger(){ PropertyConfigurator.configure(this.getClassLoader().getResourceAsStream("log4j.properties")); } } ``` 这里通过 `PropertyConfigurator.configure(InputStream)` 接口传入资源流形式的 properties 配置描述符来启动服务[^3]。 --- #### 3. 编写 Properties 配置文件 创建名为 `log4j.properties` 的纯文本档存放到 assets 文件夹路径下面,内容大致如下所示: ```properties # Root logger option log4j.rootLogger=DEBUG, file # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/data/data/com.example.myapp/files/logfile.log log4j.appender.file.MaxFileSize=1MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n ``` 上述脚本设置了滚动策略(Rolling),每当达到指定容量限制就会触发新建动作,并保留最多十个副本以防丢失重要资料[^3]。 --- #### 4. 使用 Logger 记录消息 一旦完成了前期准备工作之后,在任意位置都可以轻松发起请求了: ```java LOGGER.debug("This is debug level logging."); LOGGER.info("Informational message logged here."); LOGGER.warn("Warning condition encountered!"); LOGGER.error("Error occurred:", exceptionObject); ``` 每种级别的含义分别代表不同程度的重要性程度,开发者可以根据实际需求自由切换显示范围[^3]。 --- #### 注意事项 尽管如此简单易懂的方式确实可行,但由于性能开销较大以及兼容性问题等原因,官方推荐优先考虑更加现代化的选择比如 SLF4J 结合 Logback-android 组件组合而成的新一代解决方案[^2]。此外还有像 Timber 这样的专用型产品也值得一看哦! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值