java 日志管理

1.1         java 日志

java拥有一个设计良好的类集--java.util.logging,通过日志系统来控制、格式化以及发布消息。日志系统功能非常强大,可以设置日志消息的优先级,可以通过过滤器来选择感兴趣的信息。并且消息可以输出到Handler对象能够处理的任意源,如控制台、窗口、数据库、本地文件等等。

1.1.1         主要类

·         Logger:应用程序进行 logging 调用的主要实体。Logger 对象用来记录特定系统或应用程序组件的日志消息。 

·         LogRecord:用于在 logging框架和单独的日志处理程序之间传递 logging 请求。 

·         Handler:将 LogRecord 对象导出到各种目的地,包括内存、输出流、控制台、文件和套接字。

·         Level:定义一组可以用来控制logging输出的标准logging级别。可以配置程序为某些级别输出 logging,而同时忽略其他输出。 

·         Filter:为所记录的日志提供日志级别控制以外的细粒度控制。Logging API 支持通用的过滤器机制,该机制允许应用程序代码附加任意的过滤器以控制 logging 输出。 

·         Formatter:为格式化 LogRecord 对象提供支持。此包包括的两个格式化程序SimpleFormatterXMLFormatter分别用于格式化纯文本或 XML 中的日志记录。

1.1.2         配置日志属性

LogManager类控制着整个日志系统。其实例在LogManager初始化期间创建。LogManager包括了拥有所有指定Logger对象的层次式名字空间,也包括了日志系统配置中的Handlers以及其他对象所使用的日志控制属性。

日志控制属性可以从配置文件中获取,从输入流中读取,也可以采用在Handler初始化时来设置。

1)配置文件

一般情况下,LogManage首先读取默认配置文件,该配置文件位于jdk-path/jre/lib文件夹下,文件名为logging.properties。配置文件中有两个系统属性若被配置,系统将不从配置文件中获取属性,而是按照系统属性来获取属性。两系统属性如下:

1java.util. logging.config.file 自定义配置文件路径。

2ava.util.logging.config.class自定义类负责读入配置信息。

如果这两个属性都没有被配置,那么Java将使用默认logging. properties文件中的属性。

此外,我们还可以让LogManager直接不读取默认配置文件,我们需要LogManager初始化之前设置系统属性,如:

System.setProperty("java.util.logging.config.file",configPath/logging.properties),这样,LogManager将从该文件读取属性而不从默认配置文件。

2LogManage readConfiguration方法

    LogManage InputStream中读取配置文件。

3Handler初始化

如:FileHandler(String pattern, int limit, int count, boolean append)

Pattern为文件保存路径,limit为每个文件大小,count为文件数,append为数据写入是否采用添加的方式。  

1.1.3         日志系统的运行流程

读取日志控制属性

创建Logger对象OBJ

OBJ添加Handler

OBJ发送消息

创建Handler对象

1)首先创建Handler对象

可以实例化logging包提供的FileHandlerConsoleHandler等类,也可以是由Handler类继承而来的自定义类。对象初始化时,其属性根据读取的日志控制属性来配置,若初始化类有参数则参数对应的属性修改为参数值。属性中日志的显示方式、显示内容也可以由对象的方法进行修改。如:

l         setLevel设置消息级别

l         setFilter设置依据消息级别过滤消息的过滤器

l         etFormatter 设置消息显示格式。

2)创建Logger对象,添加Handler,并为Logger对象设置属性

Logger类是logging类库中执行日志操作的类。在创建对象后必须为其添加消息发送的对象Handler,此外还可以设置的部分属性,主要包括:

l         setLevel 当发送消息级别大于等于设置的级别时,消息才发送。

l         setFilter 设置消息发送的过滤器。

l         setUseParentHandlers 当设置为否时,将不执行默认Handler的操作。

3)发送消息

Logger对象向Handler对象发送消息。发送内容包括消息级别和消息内容两部分。可以调用将消息级别和内容作为参数的log方法,也可以是只有消息内容参数的消息级别方法(如:infowarning)

1.1.4         自定义日志功能简介

    我们可以通过自定义部分类和接口,来达到自定义日志功能的目的。

1Handler

继承Handler抽象类,重写publish方法。在该方法中可以定义以何种方式(窗口、数据库等)显示消息,还可以定义消息内容、设置消息格式。

2Formatter

继承Formatter类,重写formatMessage方法,定义消息内容、设置消息格式。

3Filter接口

isLoggable方法中,依据消息级别来选择的需要发送的消息。

1.1.5         日志系统的运用实例

1)自定义配置文件

依据logging.properties格式在d盘根目录下自定义了配置文件newLog.properties,其中fileHandler部分内容如图1

 

2)实例代码:

    //LogManager设置新配置文件

System.setProperty("java.util.logging.config.file",”d://newLog.properties”);

//新建文件句柄对象,并设置属性

FileHandler handler = new FileHandler()

handler.setFormatter(new SimpleFormatter());

//新建Logger对象,设其属性,并发送消息

Logger logger=Logger.getLogger("logger")

logger.addHandler(handler)

logger.logLevel.INFO,” This is the first logging info!

logger.config("I am a config message");

    logger.warning("The warning info is coming!");

3)结果

d盘根目录下生成log.log文件。内容如图2

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值