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

使用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. malloc error:初始值设定元素不是常量

    #include <stdio.h> #include <stdlib.h> char *buf = (char *)malloc(BUFSIZ); setbuf(stdout ...

  2. 贪婪 vs 不贪婪

    当重复一个正则表达式时,如用 a*,操作结果是尽可能多地匹配模式.当你试着匹配一对对称的定界符,如 HTML 标志中的尖括号时这个事实经常困扰你.匹配单个 HTML 标志的模式不能正常工作,因为 .* ...

  3. Excel中提取最大值的问题

    在使用excel的时候,碰到了一个如下的问题 意思是以每个字母为条件,取这个字母下面的数字中的最大值,需要注意一个问题是每个字母下面的数字个数不一定相等,例如d下面有四个数字,可以设置如下公式解决: ...

  4. 【WebGoat习题解析】Parameter Tampering->Bypass HTML Field Restrictions

    The form below uses HTML form field restrictions. In order to pass this lesson, submit the form with ...

  5. dos命名重启或关闭远程服务器

    1.建议远程连接.(把远程机器IP换成实际IP地址,把密码改为administrator的真实密码) net use \\远程机器IP\ipc$ "密码"/user:adminis ...

  6. Mysql 拼接字段查询语句和join查询拼接和时间查询

    个人平时记录的,有点乱 1.修改时间字段,如果时间字段的类型是date或者是datetime类型的 update 表名 set 时间字段 = DATE_FORMAT(NOW(),'%Y-%m-%d % ...

  7. Python’s SQLAlchemy vs Other ORMs[转发 1]SQLObject

    SQLObject SQLObject is a Python ORM that maps objects between a SQL database and Python. It is becom ...

  8. 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...

  9. UI UIBUTTON

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  10. java selenium (十四) 处理Iframe 中的元素

    有时候我们定位元素的时候,发现怎么都定位不了. 这时候你需要查一查你要定位的元素是否在iframe里面 阅读目录 什么是iframe iframe 就是HTML 中,用于网页嵌套网页的. 一个网页可以 ...