Log4J使用完全手册

Log4J使用完全手册 1
2009年02月15日 14:04

Log4JApache的一个开放源代码项目(http://logging.apache.org/log4j/docs/),它是一个日志操作包。通过使用Log4J,可以指定日志信息输出的目的地,控制每一条日志的输出格式,定义日志信息的级别。所有这些功能通过一个配置文件灵活进行配置。

一、LOG4J组成

    LOG4J主要由三大组件组成:
    . Logger: 
决定什么日志信息应该被输出、什么日志信息应该被忽略;
    . Appender: 
指定日志信息应该输出到什么地方这些地方可以是控制台、文件、网络设备;
    . Layout: 
指定日志信息的输出格式;

    一个Logger可以有多个Appender,也就是说日志信息可以同时输出到多个设备上,每个Appender对应
    
一种Layout(示例见下图)

              ↗ Appender1 → Layout
     
     
    Logger
     
 
              ↘ Appender2 → Layout


二、Logger组件

    1. Logger组件提供的方法:

       Logger组件是LOG4J的核心组件,它代表了Log4J的日志记录器,它能够对日志信息进行分类筛选。它由org.apache.log4j.Logger类实现,提供了如下方法:

java 代码

1. package org.apache.log4j;   

2.   

3. public class Logger {   

4.   

5.             // Creation & retrieval methods:   

6.             public static Logger getRootLogger();   

7.             public static Logger getLogger(String name);   

8.   

9.             // printing methods:   

10.            public void debug(Object message);   

11.            public void info(Object message);   

12.            public void warn(Object message);   

13.            public void error(Object message);   

14.            public void fatal(Object message);   

15.      

16.            // generic printing method:   

17.            public void log(Priority p, Object message);   

18.}   

    2. 在配置文件中配置Logger组件

       可在Log4J配置文件中配置自己的Logger组件,示例:

       log4j.logger.myLogger=WARN

       以上代码定义了一个Logger组件,名称为myLogger,日志级别为WARN


    3. 
日志级别种类:

       一共有五种,级别由高到低依次是:fatalerrorwarninfodebug。获得Logger实例后,我们可调用以下方法之一输出日志信息:

       public void debug(Object message);   //输出debug级别的日志信息;
       public void info(Object message);   //
输出info级别的日志信息;
       public void warn(Object message);    //
输出warn级别的日志信息;
       public void error(Object message); //
输出error级别的日志信息;
       public void fatal(Object message); //
输出fatal级别的日志信息;
       public void log(Priority p, Object message);//
输出参数Priority指定级别的日志信息;

       以上方法只有当它的级别大于或等于Logger组件配置的日志级别时才调用。以前面我们配置的myLogger为例,它的日志级别为WARN, 那么在程序中,它的warn()error()fatal()方法会被执行。对于log()方法,只有当它的参数Priority指定的日志级别大于或等于WARN时,它才会被执行。

    4. 为什么需要对日志进行分级?
    
       
在写程序的时候,为了调试程序,我们会在很多出错的地方输出大量的日志信息。当程序调试完,不需要这些信息时,将程序中这些输出日志信息代码删除吗?这样费时费力,对于大型程序几乎不可行。通过对日志分级,假如不想输出WARN级别的日志信息,则Logger组件的级别调高即可,省时省心。

    5. Logger组件的继承性

       Log4J提供了一个root Logger,它是所有Logger组件的祖先”,它永远存在,且不能通过名字检索或引用,通过Logger.getRootLogger()方法取得它。配置root Logger代码:

       log4j.rootLogger=INFO,console

       可在配置文件中方便地配置存在继承关系的Logger组件,凡是在符号“.”后面的组件都会成为在符号“.”前面的Logger组件的子类。例如:

       log4j.apache.myLogger=WARN
       log4j.apache.myLogger.mySonLogger=,file

       以上代码中, mySonLoggermyLogger的子类Logger组件。Logger组件的继承关系:
       . 
如果子类Logger组件没有定义日志级别,则将继承父类的日志级别;
       . 
如果子类Logger组件定义了日志级别,就不会继承父类的日志级别
;
       . 
黙认情况下,子类Logger组件会继承父类所有的Appender,把它们加入到自己的
Appener;
       . 
如果把子类Logger组件的additivity标志设为false,那么它就不会继承父类Appenderadditivity标志 默认值为false

       以上配置的三个Logger继承关系示例如图:
     
       root Logger: 
日志级别=INFO appender清单=console
                            ↑
       myLogger: 
日志级别=WARN appender清单
=null
                            ↑
       mySonLogger: 
日志级别=null appender清单=file

       这三个Logger组件实际日志级别和Appender如下表:

       Logger组件          日志级别          Appender清单
       root Logger         INFO              console
       myLogger            WARN              console(
继承)
       mySonLogger         WARN(
继承)        fileconsole(继承)

   
三、Appender组件

    Appender组件决定将日志信息输出到什么地方。支持以下目的地:
    . 
控制台(Console);
    . 
文件
(File);
    . GUI
组件
(GUI component);
    . 
套接口服务器
(Remote socket server);
    . NT
的事件记录器
(NT Event Logger);
    . UNIX Syslog
守护进程(Remote UNIX Syslog daemon);

    一个Logger可同时对应多个Appender,示例:myLogger配置二个Appender: 一个file, 一个是console

    log4j.logger.myAppender=WARN,file,console

    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=log.txt

    log4j.apender.console=org.apache.log4j.ConsoleAppender

四、Layout组件

    Layout组件决定日志输出格式有以下几种类型
    . org.apache.log4j.HTMLLayout(
HTML表格形式布局);
    . org.apache.log4j.PatternLayout(
可以灵活地指定布局模式
);
    . org.apache.log4j.SimpleLayout(
包含日志信息的级别和信息字符串
);
    . org.apache.log4j.TTCCLayout(
包含日志产生的时间、线程和类别等信息
);
    
    
为名称为consoleAppender配置SimpleLayout代码如下

    log4j.appender.console.layout=org.apache.log4j.SimpleLayout

    输出日志格式如下:

    WARN - This is a log message from the myLogger
    
    
为名称为fileAppender配置PatternLayout,代码如下:

    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%t %p - %m%n

    输出日志格式如下:

    THREAD-1 WARN - This is a log message from the myLogger

    PatternLayout让开发者依照ConversionPattern定义输出格式。ConversionPattern中一些指定日志内容和格式的预定义符号说明如下:

    符号         描述
    %r           
自程序开始后消耗的毫秒数
    %t           
表示日志记录请求生成的线程
    %p           
表示日专语句的优先级
    %r           
与日志请求相关的类别名称
    %c           
日志信息所在的类名
    %m%n         
表示日志信息的内容

采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值