一、LOG4J基础:
1.日志定义
       简单的Log4j使用只需要导入下面的包就可以了
  // import log4j packages
  import org.apache.log4j.Logger;
  
  然后你需要在类的开头写上下面一句
  private final static Logger log =Logger.getLogger(ClassName.class); //注意这里写的是当前类的类名。
 
2.日志级别
  这样你就有了一个日志对象叫做 log,这个log有以下集中用法
  log.info();//一般信息
  log.debug();//调试信息
  log.error();//错误信息
  log.warn();//警告信息
  log.fatal();//致命错误信息
  上面列出的就是所谓log4j的输出级别,log4j建议只使用4个级别,它们从上到下分别为ERROR、WARN、INFO、DEBUG,
       假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。
 
3. 日志使用
       Log 日志主要用于记录程序运行的情况,以便于程序在部署之后的排错调试等等!这一点相信大家都很清楚。但相信很多人都会遇到这个问题:即如何选择日志级别,如何记录日志才能更好的指导调试及排查问题。以下是一些自己在项目中的心得体会
 
场景1:特定异常不需要抛出时需要记录日志,该日志级别可以选择log.error()错误日志或者log.warn()警告日志以便引起注意
例如:
    try{
        // BUSINESS CODE
        // ...
        // ...
    }catch (Exception e) {
       log.warn("STARIBOSS.internal.error!Case:", e);
    }
 
原因:
1)很多BUG根本原因都与配置文件配置有关,只用try...catch吃掉异常,很难定位问题原因,记录日志后可以从日志中发现该问题,以便确认影响范围。例如读取配置文件,如果未配置配置文件时,在try..catch中使用日志记录异常信息,这样这个异常会被现场人员关注,更早的发现配置问题
 
 
场景2:Exception异常,一般使用log.error("error message", e)方式输出Exception异常信息。
例如:
    try{
        // BUSINESS CODE
        // ...
        // ...
    }catch (Exception e) {
       log.error("STARIBOSS.internal.error!case:", e);
        // DEAL EXCEPTION CODE
        // ...
    }
 
原因:
1)这种方式会输出堆栈信息,可以很方便的定位问题,减少排查问题的难度
2)Exception 异常一般为意料之外的未知异常,需要引起现场人员的主意,现场一般会通过ERROR搜索日志,查找找到级别为ERROR级别的错误并关注
 
场景3:已知异常,记录日志时,尽量打印对排查问题有帮助的信息
举例:
    if (newMobilePin.length() != 6 || !isNum.matches()) {
        logger.info("agent moblie new pin not correct");
        throw new MsrRuntimeException("new.pin.not.correct");
    }
该异常是已知异常所以使用了info级别日志记录异常信息,因为异常原因MsrRuntimeException中已经说明,因此日志中记录的信息内容对排查问题帮助不大
修改如下:
    if (newMobilePin.length() != 6 || !isNum.matches()) {
        logger.info("newMobilePin="+newMobilePin);
        throw new MsrRuntimeException("new.pin.not.correct");
    }
原因:
1)日志的作用是“Log 日志主要用于记录程序运行的情况,以便于程序在部署之后的排错调试”。因此日志中应该记录方便排查问题的信息。
例子中异常内容为新pin码不符合要求,因此将新pin码打印出来,这样调试或排查时候就可以很快知道这个错误pin码为何不符合要求
 
 
 
 
 
 
 

【JAVA】LOG4J使用心得的更多相关文章

  1. Java log4j详细教程

    Java log4j详细教程 http://www.jb51.net/article/74475.htm

  2. java log4j基本配置及日志级别配置详解

    java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾 ...

  3. Java开发学习心得(二):Mybatis和Url路由

    目录 Java开发学习心得(二):Mybatis和Url路由 1.3 Mybatis 2 URL路由 2.1 @RequestMapping 2.2 @PathVariable 2.3 不同的请求类型 ...

  4. Java开发学习心得(一):SSM环境搭建

    目录 Java开发学习心得(一):SSM环境搭建 1 SSM框架 1.1 Spring Framework 1.2 Spring MVC Java开发学习心得(一):SSM环境搭建 有一点.NET的开 ...

  5. java集合类学习心得

    java集合类学习心得 看了java从入门到精通的第十章,做个总结,图片均取自网络. 常用集合的继承关系 Linked 改快读慢 Array 读快改慢 Hash 两都之间 Collection是集合接 ...

  6. ELK 记录 java log4j 类型日志

    ELK 记载  java log4j 时,一个报错会生成很多行,阅读起来很不方便. 类似这样 解决这个问题的方法 1.使用多行合并 合并多行数据(Multiline) 有些时候,应用程序调试日志会包含 ...

  7. 从零开始学 Java - log4j 项目中的详细配置

    你还会用笔来写字么 我是不怎么会了,有时候老是拿起笔之后不知道这个字怎么写,这时候就会拿起手机去打出来:有时候还会写出来这个字之后越看越不像,这时候就开始怀疑自己的能力了:有时候写出来了一大堆字之后, ...

  8. Java log4j的环境搭建

    一.Log4j是什么? Log4j是Apache的一个开源代码项目,通过使用Log4j,我们可以控制日志信息输出的目的地.最常见的就是输出到控制台或者日志文件.同时,它强大的一点是可以在C.C++等其 ...

  9. java Log4j日志配置详解大全

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

随机推荐

  1. RAC NTP/CTSS

    本文總結主要參考: http://blog.itpub.net/23135684/viewspace-759693/ http://www.happyworld.net.cn/post/6.html ...

  2. 配置ogg异构oracle-mysql(2)源端配置

    源端配置大致分为如下三个步骤:配置mgr,配置抽取进程,配置投递进程 在源端先创建一张表,记得带主键: SQL> create table ah4(id int ,name varchar(10 ...

  3. 使用Jmeter进行http接口性能测试

    在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具. 但是Postman只能模拟单客户端的单次请求,而对 ...

  4. Java学习随笔4:Java的IO操作

    1. IO流的作用是读写设备上的数据,如硬盘文件.内存.键盘.网络等.根据数据走向,可分为:输入流和输出流:根据处理的数据类型,可分为:字节流和字符流.字节流可以处理所有类型的数据,如MP3.图片.视 ...

  5. 【java 断点续传】

    模拟 断点续传 首先,先读取word文件的 一部分 package com.sxd.readLines; import java.io.File; import java.io.FileInputSt ...

  6. LoadRunner之安装、破解、汉化教程(一)

    安装前,把所有的杀毒软件和防火墙关闭 安装前,把所有的杀毒软件和防火墙关闭 安装前,把所有的杀毒软件和防火墙关闭........     注意事项: 安装前,把所有的杀毒软件和防火墙关闭. 若以前安装 ...

  7. Jmeter之csv、用户自定义变量以及Query Type分析(八)

    很多童鞋不知道对于Jmeter的Query Type 不知道选哪个,为什么选,怎么选! 下面这边做个简单的分析, 那么首先什么是CSV Data Set Config,有什么用呢? CSV Data ...

  8. HDU 5875 Function (2016年大连网络赛 H 线段树+gcd)

    很简单的一个题的,结果后台数据有误,自己又太傻卡了3个小时... 题意:给你一串数a再给你一些区间(lef,rig),求出a[lef]%a[lef+1]...%a[rig] 题解:我们可以发现数字a对 ...

  9. loadrunner写入数据到文件

    首先在F盘创建: F:\\LR\\test.txt文件 #define USERCOUNT 100    //定义参数数量 Action() {     char *namecommon=" ...

  10. c#写windows服务(转)

    序言 前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用Windows服务实现.这篇就总 ...