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

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());

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

支付包

微信

微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[有奖励]GeneralUpdate开源项目招募开发者

[有奖励]GeneralUpdate开源项目招募开发者希望看到这篇文章的小伙伴,能看完这篇文章顺便帮忙给项目点一下“star”、转发、“在看”。先在这里谢谢各位了。github仓库地址:https://github.com/WELL-E/AutoUpdatergitee仓库地址:https://gitee…

C/C++ 读取16进制文件

1.为什么有这种需求 因为有些情况需要避免出现乱码。不管什么编码都是二进制的,这样表示为16进制就可以啦。 2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧。 16进制数据一般是:text0x340xb5...,就是0x…

【转】shell pipe与输入输出重定向的区别

http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html转载于:https://www.cnblogs.com/qrlozte/p/4465120.html

LeetCode之Remove Duplicates from Sorted Array

1、题目 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. For example, Given input array nu…

Upgrade Oracle GI 11.2.0.4_to_12.1.0.2

12.1.0.2已经发布一段时间了,随着用户的增多,目前12C的版本稳定性,以及各个方面的功能性,得到大家的认可。很多用户,需要将数据库从低版本升级到12C,本文就升级过程,做了详细的记录。&#xff0…

基于PaddleOCR实现AI发票识别的Asp.net Core应用

简要介绍用户批量上传需要识别的照片,上传成功后,系统会启动Hangfire后台Job开始调用PaddleOCR服务返回结果,这个过程有点类似微服务的架构模型。PaddleOCRPaddleOCR是百度AI团队开源的一个项目,应该是目前所有免费开源OCR项目中识别效果最好的,具体可以通过PaddleO…

java socket 路由_JAVA简单的Socket网络编程!CS

好久没写socket代码了,也忘了八九成了……话不多说!直接上代码吧!Server服务package test1;import java.io.*;import java.net.*;public class MyServer {public static void main(String[] args) throws IOException{ServerSocket server n…

linux dd 命令详解

1 磁盘管理1.1 dd1.1.1 功能说明读取&#xff0c;转换并输出数据。1.1.2 语法dd [bs<字节数>][cbs<字节数>][conv<关键字>][count<区块数>][ibs<字节数>][if<文件>][obs<字节数>][of<文件>][seek<区块数>][skip<区块…

LeetCode之Remove Duplicates from Sorted Array II

1、题目 Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array nums [1,1,1,2,2,3], Your function should return length 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It …

Struts2 OGNL

OGNL(Object-Graph Navigation Language)的概念&#xff1a; OGNL是Object-Graph Navigation Language的缩写&#xff0c;全称为对象图导航语言&#xff0c;是一种功能强大的表达式语言&#xff0c;它通过简单一致的语法&#xff0c;可以任意存取对象的属性或者调用对象的方法&…

Android获取有线和无线(wifi)的IP地址

/*** 获取IP* * param context* return*/public static String getIP(Context context) {String ip "0.0.0.0";ConnectivityManager connectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info connec…

如何实现线程池的 QueueUserWorkItem 方法的延续?

咨询区 PedroC88如果我将 Job 通过 QueueUserWorkItem 方法丢到线程池的话&#xff0c;请问我如何让程序在该 Job 完成后继续执行&#xff0c;我知道可以添加一些逻辑代码来完成此项功能&#xff0c;但我想知道有没有类似 Thread.Join() 或者怎么提取到被赋于 job 的线程 &…

LeetCode之Remove Duplicates from Sorted List

1、题目 Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3. 1->2->2->2 return 1->2 1->2->3->…

常用的搜索引擎dork (不断更新)

为什么80%的码农都做不了架构师&#xff1f;>>> pan.baidu.com xiaomi.rar 转载于:https://my.oschina.net/ecnu/blog/265731

Bzoj2656 [Zjoi2012]数列(sequence)

Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1448 Solved: 762[Submit][Status][Discuss]Description 小白和小蓝在一起上数学课&#xff0c;下课后老师留了一道作业&#xff0c;求下面这个数列的通项公式&#xff1a; 小白作为一个数学爱好者&#xff0c;很快就计算出了…

java完全解耦_java-完全解耦 - osc_bc7dotjc的个人空间 - OSCHINA - 中文开源技术交流社区...

完全解耦&#xff1a;降低代码的限制性&#xff0c;是同一代码能够用到更多的程序中1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.util.Print.print;34 interfaceProcessor {5 String name();6 Object process(Object input);7 }8 public classApply{9…

学习笔记之卸载远程目标进程中的DLL模块(转)

学习笔记之卸载远程目标进程中的DLL模块 (2007-07-23 23:51:02)转载▼学习笔记之卸载远程目标进程中的DLL模块2007/7/231.首先得把DLL模块中的线程结束使用CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);创建系统线程的快照然后用Thread32First()和Thread32Next()遍历系统中所…

Wow,一个免费、不怕打的评论插件!

快速给网站添加评论功能大家好&#xff0c;我是鱼皮&#xff0c;前段时间我自己做的网站不是被 DDOS 攻击了么&#xff1f;然后我就即时地给大家分享了一下我是怎么临时 “化解” 这次 DDOS 攻击的。结果我今天一看&#xff0c;好家伙&#xff0c;这个视频竟然都已经 120 w 播放…

MSSQLSERVER启动不了,报SQL Server 无法生成 FRunCM 线程

为什么80%的码农都做不了架构师&#xff1f;>>> 在启动MSSQLSERVER服务时&#xff0c;提示启动不了&#xff0c;在事件查看器中发现报错&#xff1a;SQL Server 无法生成 FRunCM 线程 网上搜了一下说是&#xff1a;MSSQLSERVER的协议中VIA协议被启用了&#xff0c;…

hdu 2648 Shopping

原题链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2648 纯暴力的方法T_T。。。 如下: 1 #include<cstdio>2 #include<cstdlib>3 #include<string>4 #include<iostream>5 #include<algorithm>6 typedef char State[35];7 char *ta…