学习网址1:http://www.cnblogs.com/licheng/archive/2008/08/23/1274566.html

一、快速入手

1.官网下载log4j压缩包,本地加压

2.Eclipse开发工具中新建Java项目,右键单击该项目选择“属性(properties)”打开当前项目的属性窗口,选择Java构建路径(Java Build Path)>>库(Libaries)>>添加外部JAR(Add External JARs),将刚才下载的log4j.jar包添加到项目中去。

3.在项目中新建一个log4j.properties的配置文件:该文件专门用于配置日志信息,其内容决定日志信息的输出位置及格式。右键单击项目选择 新建 >> 文件 ,文件名命名为 xxx.properties

4.将配置信息写入到刚才建立的文件log4j.properties中去:

  1. ###将日志信息输出到控制台###
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%m%n %l%n
  5.  
  6. ###将日志信息输出到文件中###
  7. log4j.appender.file=org.apache.log4j.FileAppender
  8. log4j.appender.file.File=sysInfo.log
  9. log4j.appender.file.layout=org.apache.log4j.PatternLayout
  10. log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%m%n %l%n
  11.  
  12. ###设置日志的优先级别###
  13. log4j.rootLogger=debug,stdout,file

5.新建一个java文件,测试配置是否成功:

  1. import org.apache.log4j.Logger;
  2. import org.apache.log4j.PropertyConfigurator;
  3.  
  4. public class Log4jDemo {
  5. public static void main(String[] args) {
  6. Logger log = null;
  7. try {
  8. // 初始化日志生成器,加载日志配置文件
  9. PropertyConfigurator.configure("log4j.properties");
  10. log = Logger.getLogger(Log4jDemo.class.getName());
  11.  
  12. log.debug("main");
  13. int i = 1 / 0;
  14. } catch (Exception e) {
  15. // 记录日志
  16. log.info(e.getMessage());
  17. // e.printStackTrace();
  18. }
  19. }
  20. }

6.输出结果

二、扩展学习

http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

Log4J配置文件的基本格式如下:

  1. #配置根Logger
  2. log4j.rootLogger = [ level ] , appenderName1 , appenderName2 ,
  3.  
  4. #配置日志信息输出目的地Appender
  5. log4j.appender.appenderName = fully.qualified.name.of.appender.class
  6.   log4j.appender.appenderName.option1 = value1
  7.   
  8.   log4j.appender.appenderName.optionN = valueN
  9.  
  10. #配置日志信息的格式(布局)
  11. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  12.   log4j.appender.appenderName.layout.option1 = value1
  13.   
  14.   log4j.appender.appenderName.layout.optionN = valueN

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

  1. FATAL 0
  2. ERROR 3
  3. WARN 4
  4. INFO 6
  5. DEBUG 7

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

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

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

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

打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:

  1. %m 输出代码中指定的消息
  2. %p 输出优先级,即DEBUGINFOWARNERRORFATAL
  3. %r 输出自应用启动到输出该log信息耗费的毫秒数
  4. %c 输出所属的类目,通常就是所在类的全名
  5. %t 输出产生该日志事件的线程名
  6. %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n
  7. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:20021018 22 10 28 921
  8. %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )

2. 在代码中初始化Logger: 
1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG
2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

3. 为不同的 Appender 设置日志输出级别:
当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改AppenderThreshold 就能实现,比如下面的例子:

  1. ### set log levels ###
  2. log4j.rootLogger = debug , stdout , D , E
  3.  
  4. ### 输出到控制台 ###
  5. log4j.appender.stdout = org.apache.log4j.ConsoleAppender
  6. log4j.appender.stdout.Target = System.out
  7. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
  8. log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
  9.  
  10. ### 输出到日志文件 ###
  11. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  12. log4j.appender.D.File = logs/log.log
  13. log4j.appender.D.Append = true
  14. log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
  15. log4j.appender.D.layout = org.apache.log4j.PatternLayout
  16. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
  17.  
  18. ### 保存异常信息到单独文件 ###
  19. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
  20. log4j.appender.E.File = logs/error.log ## 异常日志文件名
  21. log4j.appender.E.Append = true
  22. log4j.appender.E.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
  23. log4j.appender.E.layout = org.apache.log4j.PatternLayout
  24. log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

Log4j 日志输出学习(Eclipse)的更多相关文章

  1. log4j日志输出级别变更

    1.   现阶段log4j日志输出配置 示例:基础服务日志配置 #DEBUG < INFO < WARN < ERROR < FATAL\u65E5\u5FD7\u7684\u ...

  2. Java学习笔记 DbUtils数据库查询和log4j日志输出 使用

    DbUtils使用 QueryRunner DbUtils中定义了一个数据库操作类QueryRunner,所有的数据库操作CRUD都是通过此类来完成. 此类是线程安全的 方法名 对应sql语句 exc ...

  3. log4j日志输出到web项目指定文件夹

    感谢 eric2500 的这篇文章:http://www.cxyclub.cn/n/27860/ 摘要:尝试将log4j的文件日志输出到web工程制定目录,遇到了很多问题,最终在eric2500的指导 ...

  4. web项目Log4j日志输出路径配置问题

    问题描述:一个web项目想在一个tomcat下运行多个实例(通过修改war包名称的实现),然后每个实例都将日志输出到tomcat的logs目录下实例名命名的文件夹下进行区分查看每个实例日志,要求通过尽 ...

  5. log4j日志输出使用教程

    Log4j是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地以及日志信息的输出格式.Log4j除了可以记录程序运行日志信息外还有一 ...

  6. log4j日志框架学习

    初识Log4j:      log4j有三个部分:           1.loggers 负责捕获日志信息.           2.appenders  负责输出信息到不同的目的地         ...

  7. log4j日志输出性能优化-缓存、异步

     转载 1.log4j已成为大型系统必不可少的一部分,log4j可以很方便的帮助我们在程序的任何位置输出所要打印的信息,便于我们对系统在调试阶段和正式运行阶段对问题分析和定位.由于日志级别的不同,对系 ...

  8. log4j日志输出框架

    什么是log4j框架呢? log4j是一个日志输出框架,用于输出日志的.比如MyBatis的日志就是通过log4j输出的,主流框架都是log4j输出的,Spring框架 也可以通过log4j输出日志! ...

  9. Log4j日志框架学习零到壹(一)

    日志是系统开发过程中用于排查问题重要的记录.通常使用日志来记录系统运行的行为,什么时间点发生了什么 事情.Java中常用的莫过于Log4j框架了.下面主要围绕Log4j的基础知识.Log4j的使用方式 ...

随机推荐

  1. docker 学习操作记录 5-1

    记录5-1 [BEGIN] // :: Connecting to ... Connection established. To escape to local shell, press Ctrl+A ...

  2. kubernetes学习一:安装及部署第一个Web应用

    准备工作 首先准备Kubernets的环境,使用的是centos7.5 关闭防火墙: # systemctl disable firewalld # systemctl stop firewalld ...

  3. my first blog by cnblogs

    #include <stdio.h> int main() { printf("hello everyone."); ; } 上面为我的第一个C语言测试代码,仅供初学者 ...

  4. comment on exported function Perimeter should be of the form "Perimeter ..."go-lint

    这个提示是检查代码注释格式有问题 正确方式:

  5. 『Blocks 区间dp』

    Blocks Description Some of you may have played a game called 'Blocks'. There are n blocks in a row, ...

  6. Gridview中的编辑模板与项模板的用法

    <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server&q ...

  7. SpringBootSecurity学习(25)前后端分离版之OAuth2.0 令牌中继

    增加Eureka 前面介绍的项目都是授权服务和资源服务单独两个,这样在资源服务中的 check_token 地址都是写死的地址 : 下面我们把eureka加上,这样就可以直接用服务名了.eureka服 ...

  8. [shell] while read line 与for循环的区别

    [shell] while read line 与for循环的区别 while read line 与for循环的区别---转载整理 while read line 是一次性将文件信息读入并赋值给变量 ...

  9. APS.NET MVC + EF (04)---路由和数据传递

    4.1 视图引擎 ASP.NET MVC 提供两种视图引擎:ASPX(C#)和Razor(CSHTML),推荐使用Razor. 4.1.1 Razor的语法 在Razor视图中,所有的服务器端代码都是 ...

  10. 如何在.Net Mvc中让Get,Post请求访问同一个Action的方法

    [HttpPost] [ActionName("Index")] public ActionResult Post(Models.WeChatRequestModel model) ...