日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java exception 行号_java日志记录错误的文件_方法_行号_报错信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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];//數(shù)組長度為 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打印內(nèi)容:"+msg+

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

System.out.println(location);

}

}

3.2、測試

1、是當前線程,2、當前打印所在方法,3、是調(diào)用該方法的類,那么我們需要的就是第三個

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

打印內(nèi)容:HealerJean

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

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

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

打印文件名:ExceptionLogUtils.java

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

方法名:logInfo

行號:31

打印內(nèi)容:HealerJean

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

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

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

打印文件名:ExceptionLogUtils.java

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

方法名:main

行號:49

打印內(nèi)容:HealerJean

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

1和3總結(jié)

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];//數(shù)組長度為 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();//數(shù)組長度為 3

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

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

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

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

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

"\n打印內(nèi)容:"+msg+

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

}

}

4、打印變量

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

如果滿意,請打賞博主任意金額,感興趣的在微信轉(zhuǎn)賬的時候,添加博主微信哦, 請下方留言吧。可與博主自由討論哦

支付包

微信

微信公眾號

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的java exception 行号_java日志记录错误的文件_方法_行号_报错信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。