`

java.util.logging (不用log4j配置,自己写log文件)

    博客分类:
  • java
阅读更多

<!-- Generated by javadoc (build 1.6.0-beta2) on Fri Mar 09 12:53:26 CST 2007 -->

java.util.logging (不用log4j配置,自己写log文件)

 

FileHandler 可以写入指定的文件,也可以写入文件轮换集。

对于文件轮换集而言,到达每个文件的给定大小限制后,就关闭该文件,将其轮换出去,并打开新的文件。通过在基本文件名中添加 "0"、"1"、"2" 等来依次命名旧文件。

默认情况下,IO 库中启用了缓冲,但当缓冲完成时,每个日志记录都要被刷新。

默认情况下,XMLFormatter 类用于格式化。

配置: 默认情况下,每个 FileHandler 都是使用以下 LogManager 配置属性执行初始化的。如果没有定义属性(或者属性具有非法值),则使用指定的默认值。

  • java.util.logging.FileHandler.level 为 Handler 指定默认的级别(默认为 Level.ALL )。
  • java.util.logging.FileHandler.filter 指定要使用的 Filter 类的名称(默认为无 Filter )。
  • java.util.logging.FileHandler.formatter 指定要使用的 Formatter 类的名称(默认为 java.util.logging.XMLFormatter )。
  • java.util.logging.FileHandler.encoding 指定要使用的字符集编码的名称(默认使用默认的平台编码)。
  • java.util.logging.FileHandler.limit 指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制(默认为无限制)。
  • java.util.logging.FileHandler.count 指定有多少输出文件参与循环(默认为 1)。
  • java.util.logging.FileHandler.pattern 为生成的输出文件名称指定一个模式。有关细节请参见以下内容(默认为 "%h/java%u.log")。
  • java.util.logging.FileHandler.append 指定是否应该将 FileHandler 追加到任何现有文件上(默认为 false)。

 

模式由包括以下特殊组件的字符串组成,则运行时要替换这些组件:

  • "/" 本地路径名分隔符
  • "%t" 系统临时目录
  • "%h" "user.home" 系统属性的值
  • "%g" 区分循环日志的生成号
  • "%u" 解决冲突的唯一号码
  • "%%" 转换为单个百分数符号"%"

如果未指定 "%g" 字段,并且文件计数大于 1,那么生成号将被添加到所生成文件名末尾的小数点后面。

例如,文件计数为 2 的 "%t/java%g.log" 模式通常导致在 Solaris 系统中将日志文件写入 /var/tmp/java0.log 和 /var/tmp/java1.log,而在 Windows 95 中,则将其写入 C:\TEMP\java0.log 和 C:\TEMP\java1.log。

按照 0、1、2 等的序列安排生成号。

通常,将唯一字段 "%u" 设置为 0。但是如果 FileHandler 试图打开文件名并查找当前被另一个进程使用的文件,则增加唯一的字段号并再次重试。重复此操作直到 FileHandler 找到当前没有被使用的文件名。如果有冲突并且没有指定 "%u" 字段,则将该字段添加到文件名末尾的小数点后(它将位于所有自动添加的生成号后面)。

因此,如果三个进程都试图将日志记录到 fred%u.%g.txt,那么它们可能将 fred0.0.txt、fred1.0.txt、fred2.0.txt 作为其循环序列中的首个文件而结束。

注意,使用本地磁盘文件系统时,使用唯一的 id 以避免冲突是系统可靠运行的唯一保证。

 

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

/**
 * 
 * public FileHandler(String pattern,
 *                  int limit,
 *                  int count,
 *                  boolean append)
 *           throws IOException,
 *  SecurityException初始化要写入文件集的 FileHandler(使用可选的 append)。
 *  已向某个文件写入给定限制的数据量(近似)后,则打开另一个文件。输出将在计数文件集中进行循环。 
 *  根据 LogManager 属性(或其默认值)来配置 FileHandler(给定的模式参数用作文件名模式的情况除外),
 *  将文件限制设置为限制参数,将文件计数设置为给定的计数参数,将 append 模式设置为给定的 append 参数。 
 *
 *  计数必须至少为 1。
 *  参数:
 * pattern - 为输出文件命名的模式。
 * limit - 写入到任何一个文件的最大字节数。
 * count - 要使用的文件数。
 * append - 指定 append 模式。
 *
 */
public class TestLogger { 
    public static void main(String[] args) throws IOException { 
            Logger log = Logger.getLogger("lavasoft"); 
            log.setLevel(Level.INFO); 
            Logger log1 = Logger.getLogger("lavasoft"); 
//           System.out.println(log == log1);     //true 
            Logger log2 = Logger.getLogger("lavasoft.blog"); 
//            log2.setLevel(Level.WARNING); 

            FileHandler fileHandler = new FileHandler("c:/testlogger%g.log" ,10000,11,true); 
            fileHandler.setLevel(Level.INFO); 
            fileHandler.setFormatter(new MyLogHander()); 
            log.addHandler(fileHandler);             
            log.info("aaaaaaaddfdfd11111"); 
//            log2.info("bbb"); 
//            log2.fine("fine"); 
    } 
} 

class MyLogHander extends Formatter { 
    @Override 
    public String format(LogRecord record) { 
    		Date date = new Date();
    		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		String d = sd.format(date);
            return "[" + d + "]"  + "[" +record.getLevel() + "]" + record.getClass() + " :" + record.getMessage()+"\n"; 
    } 
}
 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java.util.logging.Logger使用详解

    详细介绍了java.util.logging.Logger的用法和结构,对如果扩展Logger起到抛砖引玉的作用!尊重劳动成果,亲下载了要给个评价!

    log4j.properties

    1.2.jar,log4j-1.2.16.jar,三个文件一起组成一个完整的日志输出,Apache的Common Logging只是一个高层的日志框架,本身并没有实现真正的写日志能力,而是依赖其它的日志系统如Log4j或者java本身的java.util....

    Linux tomcat下catalina.out日志文件分割

    tomcat支持采用log4j进行日志记录,配置方法如下: 1.更新最新的tomcat_juli.jar包到./bin/目录下; 2.拷贝log4j.jar,lo4j.properties到./lib目录下; 3.删除./conf/logging.properties 4.重启 log4j配置样本 实例...

    org.apache.log4j

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

    juli:瘦日志记录包装器,以帮助使用java.util.logging

    Java Util日志记录改进程序(JULI) 尽管很少有人将首选的框架java.util.logging (JUL)嵌入到Java中,所以它对最少的应用程序有帮助,但并不是最容易使用。 这个库轻轻地包装起来,使生活更轻松: 通过简化日志...

    slf4j-api-1.7.2.jar

    java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time. Note that SLF4J-enabling your library implies the addition of only a single ...

    方法抛出的异常处理 (2)修改UserDaoImp1类,要求用户id不能修改,修改则抛出异常 使用log4j输出日志信息

    (3)使用log4j输出日志信息 2.技能训练 (1)会使用try-catch-finally捕获和处理异常 (2)会使用throw和throws (3)会使用log4j记录日志 3.实践 实践一:使用try-catch进行异常处理 需求说明 (1)使用UserDaoImp...

    SLF4J全称为Simple Logging Facade for Java (简单日志门面),作为各种日志框架的简单门面或者抽

    slf4j-log4j12-1.7.32.jar:用于绑定 1.2版的log4j , 这是一个广泛使用的日志系统,当然你还要把log4j包加到classpath中slf4j-jdk14-1.7.32.jar:用于绑定 java.util.logging, 作为JDK 1.4 的loggingslf4j-simple-...

    spring jdbctemplate 封裝

    import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; ...

    Tomcat5.5日志管理log4j包文件

    将这包中的两个文件放置在Tomcat5.5的{catalina.home}\common\lib中即可。

    Log4j配置使用

    所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的 org.apache.log4j.Logger,JDK 自带的 java.util.logging.Logger 以及 log4j 等 POM org.slf4j slf4j-log4j12 1.7.25 log4j....

    Java LoggingAPI 使用方法

     Log4j中是通过log4j.properties这个配置文件控制日志的输出,java logging中是通过logging.properties文件完成类似的功能。  Logging.properties文件位于JDK安装路径的 jre/lib/目录下,直接上配置文件: ...

    Tomcat使用Log4j输出catalina.out日志

    Tomcat默认的日志是用java.util.logging,有几点不足,文件catalian.out不能像log4j一样按天生成,将越来越大。日志格式和项目中用log4j打出来的不一致,不利于解析。 从tomcat官网...

    lilith:Lilith 是 Logback、log4j、log4j2 和 java.util.logging 的日志记录和 AccessEvent 查看器

    它具有与 for log4j:trade_mark: 大致相当的功能,但强调稳定性、高性能和吞吐量。 与 Chainsaw 相比,它使用硬盘处理接收到的日志事件,而不是将它们保存在内存中。 因此,它能够同时处理来自多个来源的数百万个...

    Eclipse中web-inf和meta-inf文件夹的信息

    META-INF 存在程序入口相关信息, 每个jar 都会有这个文件夹,里面的 MANIFEST文件 记录这些信息WEB-INF 使用web 项目才会有这个文件夹,普通的 j2se项目

    the-complete-guide-to-logging.original

    Log4j vs Log4j2 vs Logback vs java.util.logging The Java log levels showdown: SEVERE FATAL ERROR OMG PANIC Chapter 3......................................................................................

    hadoop-2.6.0-hadoop.dll-winutils.exe

    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Exception in thread "main" java.lang.NullPointerException  at java.lang.ProcessBuilder.start(ProcessBuilder.java:...

    金蝶BOSV6.1_业务组件API参考手册

    com.kingdee.bos.service.log.define com.kingdee.bos.service.manager com.kingdee.bos.service.message com.kingdee.bos.service.message.agent com.kingdee.bos.service.message.jms ...

    java-property-file-and-log4j-logging-examples:使用log4j的Java属性文件示例和日志记录示例

    java-property-file-and-log4j-记录示例 用于读取.properties文件的可插拔Java Web应用程序插件 项目1:读取属性文件 建议不要在.java文件中存储服务器配置,例如数据库用户名,数据库密码,数据库IP地址,其他服务...

Global site tag (gtag.js) - Google Analytics