1、java日志记录错误的文件、方法、行号、报错信息

StackTraceElement s= e.getStackTrace()[0];

1.1、记录保存的文件s.getFileName()

1.2、记录保存的方法s.getMethodName()

1.3、记录报错的行号 s.getLineNumber()

1.4、记录报错的信息(不全面) e.getMessage()

1.5、互利报错的类名字 e.getClassName()

1.6、打印详细的堆栈信息 logger.error("错误堆栈", e);

获取堆栈信息,如果直接打印e,则会将它toString

/**

* 获取堆栈信息

* @param throwable

* @return

*/

public static String getStackTrace(Throwable throwable){

StringWriter sw = new StringWriter();

PrintWriter pw = new PrintWriter(sw);

try

{

throwable.printStackTrace(pw);

return sw.toString();

} finally

{

pw.close();

}

}

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* @Desc: 异常打印日志 ,提供给打印非正常异常

* @Author HealerJean

* @Date 2018/8/21 下午6:41.

*/

public static void log(Throwable e,Class c){

Logger logger = LoggerFactory.getLogger(c);

// logger.error("错误堆栈", e);

StackTraceElement s= e.getStackTrace()[0];//数组长度为 1

logger.error("\n\n-----------------"+

"\n报错文件名:"+s.getFileName()+

"\n报错的类:"+s.getClassName()+

"\n报错方法::"+s.getMethodName()+

"\n报错的行:"+ s.getLineNumber()+

"\n报错的message:"+ e.getMessage()+

"\n错误堆栈:\n"+getStackTrace(e)+

"\n------------------\n\n");

}

1.2、使用

public static void main(String[] args) {

try {

int i =1/0 ;

}catch (Exception e){

log(e,ExceptionLogUtils.class );

}

}

11:40:53.732 [main] ERROR com.duodian.youhui.admin.utils.ExceptionLogUtils -

-----------------

报错文件名:ExceptionLogUtils.java

报错的类:com.duodian.youhui.admin.utils.ExceptionLogUtils

报错方法::main

报错的行:68

报错的message:/ by zero

错误堆栈:

java.lang.ArithmeticException: / by zero

at com.duodian.youhui.admin.utils.ExceptionLogUtils.main(ExceptionLogUtils.java:68)

------------------

2、打印变量日志

log.info("cacheMsg RECUR_FIGHT A: roomId = {}, userId = {}, toUid = {}", room.getRoomId(), ctx.getUserId(), toUid);

3、info打印更多的信息

3.1、打印方法

public static void logInfo(String msg,Class c){

Logger logger = LoggerFactory.getLogger(c);

String location="";

StackTraceElement[] stacks = Thread.currentThread().getStackTrace();

System.out.println(stacks.length); //长度为3

for(StackTraceElement stackTraceElement:stacks){

logger.info("\n\n**************"+

"\n打印文件名:"+stackTraceElement.getFileName() +

"\n打印类名:"+ stackTraceElement.getClassName() +

"\n方法名:" + stackTraceElement.getMethodName() +

"\n行号:" + stackTraceElement.getLineNumber() +

"\n打印内容:"+msg+

"\n**************\n\n");

System.out.println(location);

}

}

3.2、测试

1、是当前线程,2、当前打印所在方法,3、是调用该方法的类,那么我们需要的就是第三个

public static void main(String[] args) {

logInfo("HealerJean",ExceptionLogUtils.class);

}

3

11:44:47.685 [main] INFO com.duodian.youhui.admin.utils.ExceptionLogUtils -

**************

打印文件名:Thread.java

打印类名:java.lang.Thread

方法名:getStackTrace

行号:1559

打印内容:HealerJean

**************

11:44:47.689 [main] INFO com.duodian.youhui.admin.utils.ExceptionLogUtils -

**************

打印文件名:ExceptionLogUtils.java

打印类名:com.duodian.youhui.admin.utils.ExceptionLogUtils

方法名:logInfo

行号:31

打印内容:HealerJean

**************

11:44:47.689 [main] INFO com.duodian.youhui.admin.utils.ExceptionLogUtils -

**************

打印文件名:ExceptionLogUtils.java

打印类名:com.duodian.youhui.admin.utils.ExceptionLogUtils

方法名:main

行号:49

打印内容:HealerJean

**************

1和3总结

package com.duodian.youhui.admin.utils;

import lombok.extern.slf4j.Slf4j;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.PrintWriter;

import java.io.StringWriter;

/**

* @Desc: 异常打印日志 ,提供给打印非正常异常

* @Author HealerJean

* @Date 2018/8/21 下午6:41.

*/

@Slf4j

public class ExceptionLogUtils {

public static void log(Throwable e,Class c){

Logger logger = LoggerFactory.getLogger(c);

// logger.error("错误堆栈", e);

StackTraceElement s= e.getStackTrace()[0];//数组长度为 1

logger.error("\n\n-----------------"+

"\n报错文件名:"+s.getFileName()+

"\n报错的类:"+s.getClassName()+

"\n报错方法::"+s.getMethodName()+

"\n报错的行:"+ s.getLineNumber()+

"\n报错的message:"+ e.getMessage()+

"\n错误堆栈:\n"+getStackTrace(e)+

"\n------------------\n\n");

}

/**

* 获取堆栈信息

* @param throwable

* @return

*/

public static String getStackTrace(Throwable throwable){

StringWriter sw = new StringWriter();

PrintWriter pw = new PrintWriter(sw);

try

{

throwable.printStackTrace(pw);

return sw.toString();

} finally

{

pw.close();

}

}

public static void logInfo(String msg,Class c){

Logger logger = LoggerFactory.getLogger(c);

StackTraceElement[] stacks = Thread.currentThread().getStackTrace();//数组长度为 3

logger.info("\n\n**************"+

"\n打印文件名:"+stacks[2].getFileName() +

"\n打印类名:"+ stacks[2].getClassName() +

"\n方法名:" + stacks[2].getMethodName() +

"\n行号:" + stacks[2].getLineNumber() +

"\n打印内容:"+msg+

"\n**************\n\n");

}

}

4、打印变量

log.info("admin[{}],[{}],[{}];请求地址:[{}];访问ip:[{}]", CasConfig.RemoteUserUtil.getRemoteUserId(),CasConfig.RemoteUserUtil.getRemoteUserAccount(),CasConfig.RemoteUserUtil.getRemoteUserName(),request.getRequestURL(), IpUtil.getIp());

如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,添加博主微信哦, 请下方留言吧。可与博主自由讨论哦

支付包

微信

微信公众号

java 记录错误日志文件_java日志记录错误的文件_方法_行号_报错信息相关推荐

  1. java exception 行号_java日志记录错误的文件_方法_行号_报错信息

    1.java日志记录错误的文件.方法.行号.报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1.记录保存的文件s.getFileName() 1.2 ...

  2. 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )

    文章目录 一.崩溃信息描述 二.手机命令行操作 三.电脑命令行操作 四.Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 R ...

  3. java word转成表格_java将Word/Excel/PDF文件转换成HTML整理

    项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下: 一.使用Jacob转换Word,Excel为HTML "JACOB一个Java-COM中间件. ...

  4. 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

    文章目录 一.从 Tombstone 报错日志中查找报错动态库 二.addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工 ...

  5. Android 日志打印工具类 可显示打印所在的方法和行号

    Android 日志打印工具类 可显示打印所在的方法和行号.便于开发人员查看Log信息~~ package com.newland.util;import java.io.BufferedWriter ...

  6. 日志打印显示报错信息

    日志打印显示报错信息 直接打印e 日志文件不显示详细报错信息 logger.error("内部错误"+ e); 使用下面这句代码,即可解决问题. logger.error(&quo ...

  7. 【elasticsearch系列】双击elasticsearch.bat闪退,日志排查报错信息

    打开my-application.log日志文件,寻找报错信息,如下: [1] bootstrap checks failed [1]: the default discovery settings ...

  8. java报错信息怎么看_AE-E3D插件无效或提示OPENGL E3D Debug等错误报错信息怎么办?...

    1.[AE报错]could not be loaded (126):无法加载增效工具(48:46) 01. AE报错:could not be loaded (126):无法加载增效工具(48:46) ...

  9. java 504错误怎么解决_求助java.lang.NoClassDefFoundError怎么解决,报错信息如下

    求助java.lang.NoClassDefFoundError怎么解决,报错信息如下 四月 14, 2018 11:03:07 上午 org.apache.catalina.startup.Embe ...

最新文章

  1. 信息管理代码分析二读取二进制文件数据
  2. [T-ARA][HUE]
  3. 黎曼猜想的1/2和质子自旋的1/2会不会是一个数?
  4. Django + Uwsgi + Nginx 的生产环境部署项目知识点
  5. junit 引入spring 注解管理_第05章 Spring 整合 Junit
  6. 【HDOJ】3315 My Brute
  7. 研究生如何选定课题方向 如何变学神
  8. MPEG-4 压缩编码标准
  9. argument ‘input‘ (position 1) must be Tensor, not XX
  10. top10开源docker开发工具
  11. 清华大学发布10大机器翻译学习必读论文清单 | 资源
  12. robotframework 接口测试 +RSA 加密
  13. 如何考评一名前端工程师
  14. pycharm运行python程序没有解释器怎么办
  15. 手机怎么把照片转JPG格式?这两种方法可以迅速转换
  16. 对学计算机学生礼仪,计算机学院举办“一学一做”之文明礼仪宣传月主题教育活动...
  17. C语言字符串去空格(最简单版本)
  18. 驰网独家英特尔i913900K处理器性能参数一览!Steam游戏专用i913900k服务器!!
  19. [转载] 七龙珠第一部——第119话 能成功吗 传说的魔封波
  20. airplay 安卓接收_在没有Apple TV的情况下将AirPlay添加到接收器-Raspbmc和Raspberry Pi

热门文章

  1. b360i能用的黑苹果网卡_安装i7-8700+微星 B360M MORTAR+GTX 1060 黑苹果Hackintosh
  2. kali linux 中字符映射错误,#、\、|、“ 不能输入
  3. 计算机教师教育教学特长,计算机教师教学计划
  4. nvue - 单行溢出隐藏
  5. 【大数据24小时】大数据溯源玫瑰花;流量漫游费将如期取消
  6. 2021年A特种设备相关管理(锅炉压力容器压力管道)考试报名及A特种设备相关管理(锅炉压力容器压力管道)免费试题
  7. Android开发——蓝牙通信实现
  8. 2021-9-20 18点00 程序外生活 - 中国A50指数 机器预测学习跟踪记录 - 回调有点大,但是还是再箱体里面,且没有破前低,恒大黑天鹅继续发酵,等待箱体稳定。
  9. Blynk扩展库正式发布!Mind+软件中也能愉快地使用Blynk物联网平台了!
  10. 解读5G非独立组网(NSA)方案