日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息。

使用log4j来进行日志文件记录经典步骤:

001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹下

002.对已经copy过来的jar包,点击右键,然后执行下图操作,

项目中就会多出一个引入外部Library的项目

003.在src目录下创建一个名称为log4j.properties文件

004.编写,粘贴已经写好的配置文件内容,编码方式可以做下修正。对配置文件点击右键→属性→other→utf-8,然后应用确定即可。如果再次报错,不理会他,点击确定,再次Ctrl+S即可。

005.就是在main方法所在类中,添加如下代码

//首先是创建一个静态的Logger对象

public static Logger logger=Logger.getLogger("log4j");

接下来就可以通过logger.debug(“日志内容”);

注意事项:通过反编译源码我们知道,getLogger方法,有两个重载。

我们当前使用的是传入字符串的重载,经过多方资料验证,括号中传入任何内容对抽象工厂产生出一个Logger实例时没有任何影响的。所以可以放心使用。

  其中 [level] 是日志输出级别,共有5级:

  FATAL       0  
  ERROR      3  
  WARN       4  
  INFO         6  
  DEBUG      7 
 

  输出级别优先级:

 all<Trace<debug<info<warn<error<fatal<off

  Appender 为日志输出目的地,Log4j提供的appender有以下几种:

  org.apache.log4j.ConsoleAppender(控制台),
  org.apache.log4j.FileAppender(文件),
  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  Layout:日志输出格式,Log4j提供的layout有以下几种:

  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
  
 
 
 

  配置文件:

  log4j.rootLogger = debug,A,B,C,

  # 输出到控制台

  log4j.appender.A = org.apache.log4j.ConsoleAppender

  log4j.appender.A.Target = System.out

  log4j.appender.A.layout = org.apache.log4j.PatternLayout

  log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n

  

  # 输出到日志文件

  log4j.appender.B = org.apache.log4j.DailyRollingFileAppender

  log4j.appender.B.File = logs/log.log

  log4j.appender.B.Append = true

  log4j.appender.B.Threshold = DEBUG # 输出EBUG级别以上的日志

  log4j.appender.B.layout = org.apache.log4j.PatternLayout

  log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n

  # 保存异常信息到单独文件

  log4j.appender.C = org.apache.log4j.DailyRollingFileAppender

  log4j.appender.C.File = logs/error.log # 异常日志文件名

  log4j.appender.C.Append = true

  log4j.appender.C.Threshold = ERROR #只输出ERROR级别以上的日志

  log4j.appender.C.layout = org.apache.log4j.PatternLayout

  log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n

问题:

如何使用log4j记录日志?

解析:引入jar包

创建properties文件

编写log4j配置代码

log4j记录日志

java中开源日志记录工具log4j的更多相关文章

  1. 开源日志记录工具log4j

    前言:当我们进行大的项目书写的时候或者我们选择维护程序的时候,想知道几点几时我们录入的数据有bug是那么我们就采用--------------------------->log4j记录日志的信息 ...

  2. 【学习笔记】开源日志记录工具log4j使用方法

    http://blog.csdn.net/zouqingfang/article/details/37558469 一.在MyEclipse中使用log4j的步骤比较简单,主要分为以下四个步骤: 1. ...

  3. slf4j+log4j在Java中实现日志记录

    小Alan今天来跟大家聊聊开发中既简单又常用但必不可少的一样东西,那是什么呢?那就是日志记录,日志输出,日志保存. 后面就统一用日志记录四个字来形容啦. 日志记录是项目的开发中必不可少的一个环节,特别 ...

  4. log4net--不可多得的开源日志记录组件

    log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...

  5. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  6. java中的日志打印

    java中的日志打印: 日志工具类: #获取日志 INFO:表示获取日志的等级 A1:表示日志存器,可以自定义名称 #===DEBUG INFO log4j.rootLogger=DEBUG,A1,A ...

  7. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  8. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  9. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

随机推荐

  1. Result Maps collection already contains value for

    Result Maps collection already contains value for select s.id,s.branch_name from t_wx_shop s left jo ...

  2. 谈谈javascript中的日期Date对象

    一.日期对象  在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间.  日期对象的创建:  new Date();二.将日期对象转换为字符串  将日期对象转换为字 ...

  3. nginx的ngx_http_request_t结构体

    struct ngx_http_request_s { uint32_t signature; /* "HTTP" */ //请求对应的客户端连接 ngx_connection_t ...

  4. 安装Nvidia k80驱动步骤

    安装Nvidia k80驱动步骤 ------------------ 环境介绍: CentOS6 远程终端使用Xshell -------------------- 安装Nvidia k80驱动步骤 ...

  5. C#如果把A.new()编译成new A()

    缘由 对于初次接触某个第三方库的C#开发者,假如要调用里面一个方法,发现需要一个A类型的实例作为参数,怎么获得这个实例呢? 我想大多数人会先尝试new A吧: 如果没有,可能会尝试输入A.看看有没可能 ...

  6. Scala学习(一)

    最近在学习Scala,总结了一下比较基础的知识. 一.Scala简介 1.Scalable Language,是一门多范式的编程语言,是一种纯面向对象的语言,每个值都是对象. 2.特点:①Scalab ...

  7. Oracle通过一个Value值查询数据库

    ---恢复内容开始--- 大家在想看看数据库中有哪些数据表中,哪些字段中有“helloworld” 这个字符串,现在数据库所有的表,视图都不能直接提供,所有必须通过循环去访问所有的数据表,所有的字段列 ...

  8. 关于BigDecimal 的计算

    BigDecimal 构造方式主要包括4种: 支持double.int.long等类型计算,废话少说,直接上代码 import java.math.BigDecimal; public class B ...

  9. ARM、Intel、MIPS处理器啥区别?看完全懂了

    安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小.MIPS在32位和64位嵌入式领 ...

  10. css选择符

    E>F:子选择符,选择所有作为E元素的子元素F.<style type="text/css">li>a {color: #ccc;}</style&g ...