`

使用Log4j进行日志记录

阅读更多

DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件。

如果您不熟悉Log4J,建议阅读一下 使用Log4j进行日志记录

我们可以按下面的方式配置DailyRollingFileAppender:

log4j.rootCategory=INFO,file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.File=run.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=INFO
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%c %x - %m%n   

在DailyRollingFileAppender中可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:

  • '.'yyyy-MM,对应monthly(每月)
  • '.'yyyy-ww,对应weekly(每周)
  • '.'yyyy-MM-dd,对应daily(每天)
  • '.'yyyy-MM-dd-a,对应half-daily(每半天)
  • '.'yyyy-MM-dd-HH,对应hourly(每小时)
  • '.'yyyy-MM-dd-HH-mm,对应minutely(每分钟)

DatePattern中不用处理的文字要放到单引号(')中,如上面的(.)。如果您对此有疑问可以查阅SimpleDateFormat的文档。DailyRollingFileAppender中使用这个类来处理DatePattern。

DatePattern格式化之后的文本作为文件名字的后缀。DailyRollingFileAppender不支持格式化之后的文本作为文件名字的前缀。

DailyRollingFileAppender在每一个日志事件(LoggingEvent)附加(append)之前检查是否需要附加。也就是说如果在一个滚动区间中没有任何日志记录,那么这个区间的日志记录文件就不会形成。

 

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

1、配置根Logger


      其语法为:
      log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
      level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName:就是指定日志信息输出到哪个地方(这个appenderName其实就是你自己定义的appender的名称)。您可以同时指定多个输出目的地。
     例如:log4j.rootLogger=info,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:ss} %c %m%n
           这里需要说明的就是日志信息格式中几个符号所代表的含义:
           -X号: X信息输出时左对齐;
                   %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
                   %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
                   %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字符,就从左边交远销出的字符截掉。

分享到:
评论

相关推荐

    使用log4j进行日志记录

    Log4j提供了灵活的配置方法,默认是调用BasicConfigurator.configure()来进行配置,但如果只是简单的调用BasicConfigurator.configure()来进行配置工作,那么所有的配置都是固定的,不方便以后修改配置。另一种是...

    示范如何在android工程中使用log4j记录日志

    在Android开发中,日志记录是一项非常重要的任务,它...通过以上步骤,你就能在Android工程中成功使用Log4j进行日志记录了。记得合理配置日志级别,平衡调试需求与性能消耗,以及定期清理日志,以保持应用的健康运行。

    log4j使用与java中log4j记录日志如何写入数据库

    Log4j是Apache组织提供的一款开源的日志记录工具,它功能强大、灵活易用。本文将详细介绍如何在Java中使用Log4j来记录日志,并将其写入数据库。 首先,我们需要了解Log4j的基本结构。一个简单的Log4j项目通常包含...

    tomcat8更换log4j记录日志

    压缩包中的"**lib**"目录可能包含Log4j的必要依赖库,比如`log4j.jar`,这是运行Log4j的日志记录功能所必需的。确保这些库文件被添加到Tomcat的`lib`目录,使得所有部署的应用都能访问Log4j。 综上所述,通过正确...

    log4j2.xml记录日志到到数据库

    最后,在代码中使用Log4j2进行日志记录,例如: ```java import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Main { private static final Logger logger = ...

    Log4j记录日志DEMO

    本DEMO将深入探讨如何使用Log4j进行日志记录。 ### 1. Log4j组件 Log4j主要由以下三个核心组件构成: - **Logger**: 日志记录器,负责生成日志事件。 - **Appender**: 输出端,定义日志信息的输出目的地,如...

    AndroidStudio 使用log4j记录日志,按照大小定期滚动日志Demo

    首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和强大的功能。在Android环境中,由于系统默认的日志记录器(Logcat)有一些限制,如日志长度、级别控制等,因此,引入log4j可以提供更高级别的...

    在Eclipse中应用Log4J记录日志

    通过上述步骤,你可以在Eclipse中成功地配置并使用Log4J进行日志记录。Log4J的强大之处在于其高度可定制性和灵活性,可以根据项目的实际需求调整日志输出格式、日志级别以及日志保存位置,极大地提高了日志管理的...

    logging-log4j日志记录

    **使用Log4j进行日志记录** 在代码中,可以通过以下方式创建并使用`logger`: ```java import org.apache.log4j.Logger; public class MyClass { private static final Logger logger = Logger.getLogger...

    使用log4j 记录日志到数据库

    这篇博客“使用log4j记录日志到数据库”将介绍如何配置和使用Log4j,以便将日志信息存储到数据库中,而非传统的文本文件。数据库存储的日志便于进行结构化查询,有助于进行长期的数据分析和管理。 首先,理解Log4j...

    weblogic中使用log4j生成日志文件实例

    3. **编写代码**: 使用Log4j进行日志记录非常简单。在Java代码中,我们导入`org.apache.log4j.Logger`,然后获取一个日志实例,最后调用相应的方法输出日志。例如: ```java import org.apache.log4j.Logger; ...

    使用log4j写日志文件

    在Java应用中使用Log4j进行日志记录的第一步,是创建并配置log4j的属性文件(log4j.properties)。这个文件定义了日志的级别、输出目的地以及日志的格式。以下是一个典型的log4j配置示例: ```properties # 设置根...

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

    总结,SLF4J和Log4j的组合使用让日志管理更加灵活,开发者可以通过SLF4J的简洁API进行日志记录,同时利用Log4j的强大功能,如自定义输出格式和多种输出目的地。通过适当的配置和测试,我们可以确保日志系统按照预期...

    log4j日志包日志包

    在Java代码中,使用`log4j`进行日志记录非常简单。首先需要导入`org.apache.log4j.Logger`,然后创建一个`Logger`实例,最后调用相应的日志方法: ```java import org.apache.log4j.Logger; public class MyClass ...

    关于开源日志记录工具log4j的使用.txt

    ### 关于开源日志记录工具log4j的...以上就是关于如何使用Log4j进行日志记录的详细介绍,包括环境配置、日志配置以及实际代码中的日志记录方法。通过合理的配置和使用,Log4j能够有效地提高软件的可维护性和调试效率。

    使用log4j2实现日志数据脱敏

    Log4j2支持多种日志记录级别(如DEBUG、INFO、WARN、ERROR),并允许通过XML、JSON、YAML或纯Java配置文件进行灵活配置。 二、日志数据脱敏概念 日志数据脱敏是指在不影响日志分析的前提下,对敏感信息进行替换、...

Global site tag (gtag.js) - Google Analytics