`
tonysmith
  • 浏览: 175694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Log4J实例应用开发

阅读更多

在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对 LoggerAppenderLayout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java propertieskey=value)【Java特性文件(键=值)】。(这里只说明properties文件)



1
、配置根Logger



       
其语法为:

        log4j.rootLogger = [ level ] , appenderName1, appenderName2, …

        level :
是日志记录的优先级,分为OFFFATALERRORWARNINFODEBUGALL或者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERRORWARNINFODEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName:就是指定日志信息输出到哪个地方。您可以同时指 定多个输出目的地。

      
例如:log4j.rootLoggerinfo,A1,B2,C3



2
、配置日志信息输出目的地



       
其语法为:

        log4j.appender.appenderName = fully.qualified.name.of.appender.class    //

        "fully.qualified.name.of.appender.class"
可以指定下面五个目的地中的一个:



            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
(将日志信息以流格式发送到任意指定的地方)



               1.ConsoleAppender
选项

                      Threshold=WARN:
指定日志消息的输出最低层次。

                      ImmediateFlush=true:
默认值是true,意谓着所有的消息都会被立即输出。

                      Target=System.err
:默认情况下是:System.out,指定输出控制台

                2.FileAppender
选项

                      Threshold=WARN:
指定日志消息的输出最低层次。

                      ImmediateFlush=true:
默认值是true,意谓着所有的消息都会被立即输出。

                      File=mylog.txt:
指定消息输出到mylog.txt文件。

                      Append=false:
默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

              3.DailyRollingFileAppender
选项

                      Threshold=WARN:
指定日志消息的输出最低层次。

                      ImmediateFlush=true:
默认值是true,意谓着所有的消息都会被立即输出。

                      File=mylog.txt:
指定消息输出到mylog.txt文件。

                      Append=false:
默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

                      DatePattern=''.''yyyy-ww:
每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:

                      1)''.''yyyy-MM:
每月

                      2)''.''yyyy-ww:
每周  

                      3)''.''yyyy-MM-dd:
每天

                      4)''.''yyyy-MM-dd-a:
每天两次

                      5)''.''yyyy-MM-dd-HH:
每小时

                      6)''.''yyyy-MM-dd-HH-mm:
每分钟

              4.RollingFileAppender
选项

                      Threshold=WARN:
指定日志消息的输出最低层次。

                      ImmediateFlush=true:
默认值是true,意谓着所有的消息都会被立即输出。

                      File=mylog.txt:
指定消息输出到mylog.txt文件。

                      Append=false:
默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

                      MaxFileSize=100KB:
后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。

                      MaxBackupIndex=2:
指定可以产生的滚动文件的最大数。



3
、配置日志信息的格式



         
其语法为:

  1). log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

                "fully.qualified.name.of.layout.class"
可以指定下面4个格式中的一个:

                 1.org.apache.log4j.HTMLLayout
(以HTML表格形式布局),

           2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

           3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

           4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

                     1.HTMLLayout
选项

                        LocationInfo=true:
默认值是false,输出java文件名称和行号

                        Title=my app file:
默认值是 Log4J Log Messages.

                     2.PatternLayout
选项

                        ConversionPattern=%m%n :
指定怎样格式化指定的消息。

                     3.XMLLayout   
选项

                        LocationInfo=true:
默认值是false,输出java文件和行号

          2). log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

            
这里需要说明的就是日志信息格式中几个符号所代表的含义:

             X: X信息输出时左对齐;

                     %p:
输出日志信息优先级,即DEBUGINFOWARNERRORFATAL,

                     %d:
输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20021018 221028921

                     %r:
输出自应用启动到输出该log信息耗费的毫秒数

                     %c:
输出日志信息所属的类目,通常就是所在类的全名

                     %t:
输出产生该日志事件的线程名

                     %l:
输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

                     %x:
输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

                     %%:
输出一个"%"字符

                     %F:
输出日志消息产生时所在的文件名称

                     %L:
输出代码中的行号

                     %m:
输出代码中指定的消息,产生的日志具体信息

                     %n:
输出一个回车换行符,Windows平台为"

"
Unix平台为"

"
输出日志信息换行

             
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:

                       1)%20c
:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。

                       2)%-20c:
指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。

                       3)%.30c:
指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。

                       4)%20.30c:
如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉

 

 

 

 

 

 

 

比较详细的例子

 

 Java代码

001.log4j.rootLogger=INFO,consoleAppender,logfile,MAIL
002.log4j.addivity.org.apache=true
003.  
004.#ConsoleAppender,控制台输出
005.#FileAppender,文件日志输出
006.#SMTPAppender,发邮件输出日志
007.#SocketAppender,Socket日志
008.#NTEventLogAppender,Window NT日志
009.#SyslogAppender,
010.#JMSAppender,
011.#AsyncAppender,
012.#NullAppender
013.  
014.#文件输出:RollingFileAppender
015.#log4j.rootLogger = INFO,logfile
016.log4j.appender.logfile = org.apache.log4j.RollingFileAppender
017.log4j.appender.logfile.Threshold = INFO  
018.# 输出以上的INFO信息
019.log4j.appender.logfile.File = INFO_log.html    
020.#保存log文件路径
021.log4j.appender.logfile.Append = true   
022.# 默认为true,添加到末尾,false在每次启动时进行覆盖
023.log4j.appender.logfile.MaxFileSize = 1MB
024.# 一个log文件的大小,超过这个大小就又会生成1个日志 # KB ,MB,GB
025.log4j.appender.logfile.MaxBackupIndex = 3  
026.# 最多保存3个文件备份
027.log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout
028.# 输出文件的格式
029.log4j.appender.logfile.layout.LocationInfo = true
030.#是否显示类名和行数
031.log4j.appender.logfile.layout.Title =title:\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef
032.#html页面的 < title >
033.############################## SampleLayout ####################################
034.# log4j.appender.logfile.layout = org.apache.log4j.SampleLayout
035.############################## PatternLayout ###################################
036.# log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
037.# log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] -   % m % n % d
038.############################## XMLLayout #######################################
039.# log4j.appender.logfile.layout = org.apache.log4j.XMLLayout
040.# log4j.appender.logfile.layout.LocationInfo = true #是否显示类名和行数
041.############################## TTCCLayout ######################################
042.# log4j.appender.logfile.layout = org.apache.log4j.TTCCLayout
043.# log4j.appender.logfile.layout.DateFormat = ISO8601
044.#NULL, RELATIVE, ABSOLUTE, DATE or ISO8601.
045.# log4j.appender.logfile.layout.TimeZoneID = GMT - 8 : 00
046.# log4j.appender.logfile.layout.CategoryPrefixing = false ##默认为true 打印类别名
047.# log4j.appender.logfile.layout.ContextPrinting = false ##默认为true 打印上下文信息
048.# log4j.appender.logfile.layout.ThreadPrinting = false ##默认为true 打印线程名
049.# 打印信息如下:
050.#2007 - 09 - 13   14 : 45 : 39 , 765 [http - 8080 - 1 ] ERROR com.poxool.test.test - error成功关闭链接
051.###############################################################################
052.#每天文件的输出:DailyRollingFileAppender
053.#log4j.rootLogger = INFO,errorlogfile
054.log4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender
055.log4j.appender.errorlogfile.Threshold = ERROR
056.log4j.appender.errorlogfile.File = ../logs/ERROR_log
057.log4j.appender.errorlogfile.Append = true
058.#默认为true,添加到末尾,false在每次启动时进行覆盖
059.log4j.appender.errorlogfile.ImmediateFlush = true  
060.#直接输出,不进行缓存
061.# ' . ' yyyy - MM: 每个月更新一个log日志
062.# ' . ' yyyy - ww: 每个星期更新一个log日志
063.# ' . ' yyyy - MM - dd: 每天更新一个log日志
064.# ' . ' yyyy - MM - dd - a: 每天的午夜和正午更新一个log日志
065.# ' . ' yyyy - MM - dd - HH: 每小时更新一个log日志
066.# ' . ' yyyy - MM - dd - HH - mm: 每分钟更新一个log日志
067.log4j.appender.errorlogfile.DatePattern = ' . ' yyyy - MM - dd ' .log '
068.#文件名称的格式
069.log4j.appender.errorlogfile.layout = org.apache.log4j.PatternLayout
070.log4j.appender.errorlogfile.layout.ConversionPattern =%d %p [ %c] -   %m %n %d
071.  
072.#控制台输出:
073.#log4j.rootLogger = INFO,consoleAppender
074.log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
075.log4j.appender.consoleAppender.Threshold = ERROR
076.log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
077.log4j.appender.consoleAppender.layout.ConversionPattern =%d %-5p %m %n
078.log4j.appender.consoleAppender.ImmediateFlush = true
079.  
080.# 直接输出,不进行缓存
081.log4j.appender.consoleAppender.Target = System.err
082.# 默认是System.out方式输出
083.  
084.#发送邮件:SMTPAppender
085.#log4j.rootLogger = INFO,MAIL
086.log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender
087.log4j.appender.MAIL.Threshold = INFO
088.log4j.appender.MAIL.BufferSize = 10
089.log4j.appender.MAIL.From = yourmail@gmail.com
090.log4j.appender.MAIL.SMTPHost = smtp.gmail.com
091.log4j.appender.MAIL.Subject = Log4J Message
092.log4j.appender.MAIL.To = yourmail@gmail.com
093.log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout
094.log4j.appender.MAIL.layout.ConversionPattern =%d - %c -%-4r [%t] %-5p %c %x - %m %n
095.  
096.#数据库:JDBCAppender
097.log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender
098.log4j.appender.DATABASE.URL = jdbc:oracle:thin:@ 210.51 . 173.94 : 1521 :YDB
099.log4j.appender.DATABASE.driver = oracle.jdbc.driver.OracleDriver
100.log4j.appender.DATABASE.user = ydbuser
101.log4j.appender.DATABASE.password = ydbuser
102.log4j.appender.DATABASE.sql = INSERT INTO A1 (TITLE3) VALUES ( ' %d - %c %-5p %c %x - %m%n ' )
103.log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout
104.log4j.appender.DATABASE.layout.ConversionPattern =% d -   % c -%- 4r [ % t] %- 5p % c % x -   % m % n
105.#数据库的链接会有问题,可以重写org.apache.log4j.jdbc.JDBCAppender的getConnection() 使用数据库链接池去得链接,可以避免insert一条就链接一次数据库
 
分享到:
评论

相关推荐

    log4j 实例

    本实例将深入探讨如何在实际项目中应用Log4j,帮助你理解和掌握其核心功能。 **1. Log4j简介** Log4j是Apache组织提供的一个用于记录日志的开源框架,支持灵活的日志配置,可以方便地调整日志输出级别,满足不同...

    spring log4j 实例

    你可以根据这些文件进一步了解如何将Spring和Log4j整合在一起,以及如何在实际项目中应用这个实例。记得检查代码中的注释,它们通常会提供关于如何运行和测试实例的重要信息。 通过上述步骤,你就可以在Spring应用...

    log4j多个简单实例

    Log4j是Apache组织开发的一个强大的、灵活的日志记录框架,它允许我们控制日志信息的输出级别、格式以及输出位置。本篇文章将深入探讨Log4j的多个简单实例,帮助你理解和掌握其基本用法。 首先,Log4j由三个主要...

    log4j实例,log4j-1.2.9.jar

    在标题“log4j实例,log4j-1.2.9.jar”中,我们看到的是Log4j的一个具体版本——1.2.9。这个版本虽然相对较旧,但它仍然是许多现有项目的基础,因为它稳定且功能齐全。 **1. Log4j的核心组件** Log4j由三个主要...

    Log4j使用实例

    ### Log4j 使用实例详解 #### 一、Log4j简介 Log4j 是一个开源的日志记录框架,由 Apache 软件基金会提供。它允许开发者根据需求配置日志等级,并灵活选择日志信息的输出方式。Log4j 的核心组件包括 Logger、...

    log4j实例java工程.zip

    这个“log4j实例java工程.zip”压缩包包含了在一个基于Eclipse、Maven、Spring和SpringMVC的项目中使用Log4j的具体示例。 首先,Eclipse是Java开发常用的集成开发环境(IDE),它提供了一整套工具来帮助编写、调试...

    log4j实例,配置

    Log4j是Apache组织开发的一款Java日志记录框架,它为Java应用程序提供了强大的日志处理能力。在软件开发中,日志记录对于调试、性能分析、问题排查等环节至关重要。Log4j通过灵活的配置,使得开发者能够控制日志信息...

    springmvc5+hibernate5+junit4+log4j2整合实例

    在本整合实例中,我们将探讨如何将Spring MVC 5、Hibernate 5、JUnit 4 和 Log4j2 集成在一起,以构建一个高效、可测试和日志记录完善的Java Web应用程序。以下是对这些技术及其整合过程的详细说明: **Spring MVC ...

    log4j应用实例

    在大型企业级应用开发中,Log4j因其灵活性和高效性而被广泛采用。 #### 二、Log4j在Web项目中的应用 在Web项目中使用Log4j时,通常会遇到一些特定场景和技术栈的选择问题,比如如何与Spring框架结合使用,以及如何...

    log4j实例

    Log4j是Apache组织开发的一款强大的、灵活的日志记录工具,它允许我们控制日志信息的输出级别、格式以及输出位置。Log4j自1999年发布以来,已经成为了Java平台上的标准日志框架之一,被广泛应用于各种项目。 ### 一...

    log4j(实例代码+文档)

    通过实例代码和文档,学习者可以快速理解和应用Log4j,从而在自己的项目中有效地进行日志管理。 **Log4j关键知识点** 1. **日志级别**: Log4j定义了多个日志级别,包括DEBUG、INFO、WARN、ERROR和FATAL。DEBUG用于...

    Web项目中使用Log4j实例

    通过以上步骤,我们可以有效地在Web项目中集成并利用Log4j进行日志记录,从而提高开发效率,提升问题排查能力,以及优化应用性能。对于更复杂的需求,如分布式日志收集、日志搜索与分析,可以结合ELK(Elasticsearch...

    Log4j配置实例

    **Log4j配置实例** Log4j是一款广泛使用的Java日志框架,它为应用程序提供了灵活的日志记录功能。本文将深入探讨Log4j的配置及其实际应用,帮助开发者更好地理解和利用这一工具。 **1. Log4j概述** Log4j是由...

    log4j帮助文档及实例

    本文将深入探讨Log4j的帮助文档及实例,帮助你更好地理解和应用Log4j。** **一、Log4j简介** Log4j是一个开源的日志记录工具,最初由Ceki Gülcü设计。它的主要目标是为Java应用程序提供灵活、高效和可配置的日志...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    Log4j是Apache组织开发的一款强大的日志组件,它允许开发者对应用程序进行日志输出的控制。Log4j包括三个核心部分:配置器(Configurator)、日志记录器(Logger)和布局器(Layout)。配置器用于设置日志级别和输出...

    log4j使用实例.zip

    通过这个"log4j使用实例.zip"压缩包,你可以学习到如何配置和使用Log4j进行日志记录,从而更好地理解和掌握Java后端开发中的日志管理。实践操作并理解每个组件的作用,将有助于你解决实际项目中遇到的问题。

    log4j实例.zip

    总结,"log4j实例.zip"提供的实例涵盖了Log4j在现代Java开发中的实际应用,包括Eclipse环境的设置、与Spring和SpringMVC的集成、以及maven的依赖管理。通过学习这个实例,开发者可以更好地理解和掌握Log4j的使用,...

    log4j配置实例

    Log4j是Apache组织开发的一款广泛应用的日志记录框架,尤其在Java应用程序中被广泛采用。它提供了一种灵活、强大的方式来记录程序运行过程中的各种信息,包括错误、警告、调试信息等。通过合理的配置,开发者可以...

    log4j实例.rar

    **Log4j简介** ..."log4j实例.rar"这个压缩包应该包含了具体的Log4j使用示例,可以帮助初学者快速上手和理解Log4j的用法。在实践中,不断学习和掌握Log4j的高级特性,将有助于提升开发效率和维护质量。

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    这些接口包括最基本的`org.apache.logging.log4j.Logger`,它是所有日志记录的起点,以及`org.apache.logging.log4j.LogManager`,它负责管理日志配置和日志器实例。API库的主要目标是与实现层解耦,允许开发者在不...

Global site tag (gtag.js) - Google Analytics