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

用Log4j自动生成日志

    博客分类:
  • j2ee
阅读更多

 Log4j是Apache基金会的一个项目,它能为Java开发着提供功能强大使用方便的各种日志处理.当然它的版本不限于Java,还有C/C++等主流语言.我觉得它就象一把非常实用的锋利小刀,让我们的写程序时更加如鱼得水.

         Log4j输出的信息分如下几类:ALL,DEBUG,INFO,ERROR,FATAL,级别从低到高,输出的内容是从多到少.从字面意思即可看出大 概,ALL指输出所有信息;DEBUG指调试信息;INFO指一般信息;ERROR指错误信息;FATAL指致命的错误信息。

       输出的信息级别和内容我们可以在程序里面设置,但缺点就不够灵活,并且无法在程序运行期间进行参数调整。通过XML或Property配置文件可以在外部 控制Logger的输出,原理都一样的,只是表现形式不一样,看个人的习惯了。下面主要讲一下如何使用Property文件来灵活配置Log4j的输出。

       在Log4j中你可以让信息输出到控制台(Console)、文件、远程数据数等中的其中一个或多个当中。 

      首先我们要先声明信息输出的级别,并且 为了能把信息输出到指定的目的地,我们要指定输出方案,如下所示:

    log4j.rootLogger = DEBUG, A1,A4

   DEBUG为输出信息的级别,A1,A4分别为输出方案的名称,下面我们来定义方案的具体参数。

    指定该输出方案的信息输出目的地为控制台:

     log4j.appender.A1 = org.apache.log4j.ConsoleAppender

     设定输出的布局为模式布局:
     log4j.appender.A1.layout = org.apache.log4j.PatternLayout

    指定模式的具体参数:
    log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n

    每个参数前要加%来说明,其中:

    %d:日期(date),如:yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等

    %t:线程名称(Thread)

     %-5p:信息优先级(Priority),宽度为5,左对齐。如DEBUG,FATAL等

      %m:输出信息(Message)

      %n:回车换行

       还有其它几个象%c,%C,%F等

     上面的方案A1指的是把信息输出到控制台,并且输出的格式按指定的格式输出。

      我们还可以指定把信息输出到文件当中,如下为普通文件输出方案:

     log4j.appender.A2 = org.apache.log4j.RollingFileAppender
     log4j.appender.A2.File = logs\\test.log
     log4j.appender.A2.MaxFileSize = 1MB
     log4j.appender.A2.MaxBackupIndex = 3
     log4j.appender.A2.layout = org.apache.log4j.PatternLayout
     log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n

     输出指定的文件test.log当中,并且指定该文件最大不超过1MB,超过之后将清除后再写入。当然也可以直接用FileAppender,不进行 Rolling,那么所以的日志信息都将追加到原信息的后面。MaxBackupIndex指的是最大备份数目。以上面文件为例,当test.log到达 1MB,则它直接被修改成test.log.1,如果这个文件已存在,则修改为test.log.2,直到MaxBackupIndex。新的日志信息, 将重新生成文件test.log。当下一次达到1MB时,此时test.log.1,test.log.2,test.log.3都已存在,则直接把 test.log.3删除,把test.log修改成test.log.3。

      把信息输出到远程数据库当中:

     # 定义A3输出到数据库
     log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
     log4j.appender.A3.BufferSize = 40
     log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver
     log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb
     log4j.appender.A3.User = 
     log4j.appender.A3.Password = 
     log4j.appender.A3.layout = org.apache.log4j.PatternLayout
     log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')

     指定输出方案为JDBCAppender,即能过JDBC把日志自动写入到远程数据库当中。BufferSize指定缓冲区的大小,当输出内容达到缓冲区 的大小时,就把数据写入数据库一次。下面的参数依次为指暄数据库驱动名称、数据库URL地址、数据库登录用户名和密码,模式布局和Select语句。

    我们也可以把信息输出到HTML文件当中,并且是按时间段自动生成文件,比如,每隔一个小时或一天、半天生成一个HTML文件:

     log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
     log4j.appender.A4.File = logs\\log.html
     log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'
     log4j.appender.A4.layout = org.apache.log4j.HTMLLayout

     第一个参数为指定输出方案为按日期滚动的文件方案。第二个参数指定文件名,第三个指定日期模式,最后一个指定布局为HTML布局。上面的设置会每隔一个小时产生一个HTML文件名,文件名为:log.html.2006-03-24-08.html的样子。

      完整的配置文件log4j.properties如下:

     log4j.rootLogger = DEBUG, A1,A4

     log4j.appender.A1 = org.apache.log4j.ConsoleAppender
     log4j.appender.A1.layout = org.apache.log4j.PatternLayout
     log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n


     log4j.appender.A2 = org.apache.log4j.RollingFileAppender
     log4j.appender.A2.File = logs\\test.log
     log4j.appender.A2.MaxFileSize = 1KB
     log4j.appender.A2.MaxBackupIndex = 3
     log4j.appender.A2.layout = org.apache.log4j.PatternLayout
     log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n

     #11区 定义A3输出到数据库
     log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
     log4j.appender.A3.BufferSize = 40
     log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver
     log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb
     log4j.appender.A3.User = 
     log4j.appender.A3.Password = 
     log4j.appender.A3.layout = org.apache.log4j.PatternLayout
     log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')


     log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
     log4j.appender.A4.File = logs\\log.html
     log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'
     log4j.appender.A4.layout = org.apache.log4j.HTMLLayout

 

     在程序里面只需声明使用Property配置文件来控制输出就行了,如下所示:

    static Logger logger = Logger.getLogger(DHMain.class);

     public static void main(String[] args) {
          PropertyConfigurator.configure("conf\\log4j.properties");
          logger.debug("启动..." );

     }

    有了Log4j,我们完全可以抛弃System.out了,用它吃力又不讨好,何苦呢?

分享到:
评论

相关推荐

    log4j生成带时间戳的日志文件(包括extras包以及简单demo)

    本文将深入探讨如何使用Log4j生成带有时间戳的日志文件,同时还会涉及到extras包的使用以及一个简单的示例。 1. **Log4j基本概念** - **日志级别**:Log4j支持多种日志级别,包括DEBUG、INFO、WARN、ERROR和FATAL...

    tomcat下用Log4j 按文件大小,生成catalina.out日志文件

    要实现按文件大小生成日志,我们需使用Log4j的RollingFileAppender。这个Appender会在日志文件达到预设大小时自动滚动并创建新的日志文件。以下是一个简单的`log4j.properties`配置示例: ```properties # 设置root...

    log4j记录Debug日志

    在使用Log4j记录Debug日志时,确保项目中引入了相应的Log4j库,并正确配置了`log4j.properties`或`log4j.xml`文件,设置DEBUG级别,然后在代码中使用Logger对象进行日志记录。例如: ```java import org.apache.log4...

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

    本文将详细介绍如何在Android Studio中使用log4j库来记录日志,并实现按照日志文件大小自动滚动的功能,以及如何进行日志内容的格式化输出。 首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和...

    log4j删除前N天日志

    本话题将深入探讨如何使用Log4j中的DailyRollingFileAppender配置来自动删除前N天的日志,以便保持日志文件的大小和数量在可控范围内。 首先,DailyRollingFileAppender是Log4j中的一个Appender实现,它按照日期...

    log4j生成文件及文件夹

    本文将深入探讨如何利用Log4j生成动态的日志文件名以及动态创建文件夹,帮助开发者更好地管理和分析应用程序的运行状态。 Log4j是一款功能强大的开源日志组件,它允许程序员灵活地控制日志信息的输出级别,如DEBUG...

    log4j 源码包 日志包 2.11.0

    Log4j 2.11.0引入了异步日志记录,通过使用LMAX Disruptor库实现高效的并发处理,显著提高了日志系统的性能。 9. **性能与扩展性** 2.11.0版本对性能进行了优化,同时提供了良好的扩展性,允许开发者自定义布局...

    kafka_Java_Log4j

    配置完成后,当应用程序中的Log4j被调用时,生成的日志将会自动发送到指定的Kafka主题。这种方式非常适合大规模分布式系统,因为它能够确保日志的实时性和可靠性。 总结一下,Kafka Java Log4j的整合使日志处理变得...

    log4j日志文件

    - Commons-Logging:提供了一个统一的日志接口,可以根据环境自动选择合适的日志实现(如Log4j、JDK内置日志等)。在程序中使用`Log`和`LogFactory`,无需直接引用Log4j的类。 在实际应用中,根据项目需求,可以...

    log4j2+slf4j+测试类日志按日期生成

    当运行这个测试类,它将按照`log4j2.xml`配置生成日志文件,每24小时创建一个新的日志文件,便于管理和查询历史日志。 总结来说,`Log4j2`和`SLF4J`的组合使用,不仅简化了日志记录的代码,还提供了强大的日志管理...

    log4cpp(添加按日期生成日志类)

    描述中提到,“在log4cpp下载的包基础上添加按日期生成日志类,仅供学习和交流”,意味着这个项目是对原始Log4cpp库的一个增强版本,增加了新的特性,即日志文件按日期自动分割。这样的设计有利于管理和检索大量的...

    log4j简单范例 日志文件是相对路径的

    Log4j是一款广泛使用的日志记录框架,尤其在Java应用程序中。它允许开发者灵活地控制日志信息的输出,提供了一种分级的日志记录机制,便于调试、性能分析和问题排查。这个“log4j简单范例 日志文件是相对路径的”...

    log4j 配置日志文件,把日志信息输出到项目的某个文件夹下

    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd'.log' # 每天生成一个新的日志文件 # 设置日志格式 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d...

    log4j-API-最新稳定版本log4j-1.2.17

    **标题与描述解析** 标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架...对于使用Log4j的开发者来说,理解和掌握API的各个方面至关重要,以实现有效的日志管理并优化应用程序的监控。

    java关于log4j打印日志demo

    Log4j是Apache组织提供的一款广泛使用的日志框架,它提供了灵活且高效的日志处理能力。本示例将详细介绍如何在Java项目中使用Log4j进行日志打印。 首先,Log4j的核心组件包括配置文件(通常为`log4j.properties`或`...

    log4j记录压缩日记

    "Log4j记录压缩日记" 指的是使用Log4j日志框架来记录并压缩日志文件。Log4j是Apache的一个开源项目,它为应用程序提供了灵活的日志记录功能,包括输出格式、日志级别管理以及日志文件的滚动策略等。在某些场景下,...

    log4j多个简单实例

    除了默认的`FileAppender`,Log4j还提供了多种Appender,如`ConsoleAppender`(输出到控制台)、`SMTPAppender`(发送电子邮件)、`RollingFileAppender`(文件大小达到一定限制后自动滚动)等。根据实际需求,你...

    如何借助log4j把日志写入数据库中

    然后,在Java代码中,我们可以创建并使用Logger对象,Log4j会自动将日志信息写入数据库。例如: ```java import org.apache.log4j.Logger; public class LogDemo { private static final Logger logger = Logger....

    用log4j生成的XML

    要使用Log4j生成XML日志,首先你需要在项目中添加Log4j的依赖。通常,这涉及到下载log4j的JAR包,并将其添加到项目的类路径中。如果你使用的是Maven或Gradle等构建工具,可以通过配置依赖管理来自动引入log4j。 三...

    log4j-1.2.16下载

    1. **Logger**:这是Log4j的基本元素,负责生成日志事件。开发者可以通过Logger实例来记录日志,每个类通常都有一个与之相关的Logger。 2. **Level**:定义了日志的级别,包括DEBUG、INFO、WARN、ERROR和FATAL,...

Global site tag (gtag.js) - Google Analytics