java.util.logging自定义打印日志

知识准备(如有不全,请查看jdk的api):

1、 Logger
属性
Filter 获取或设置过滤器以控制此 Logger 的输出。
Level 获取或设置为此 Logger 指定的日志级别(Level)。
Name 获取此 Logger 的名称。
UseParentHandlers 获取或设置此 Logger 是否应该将其输出发送到它的父 Logger。
UseParentLevel 获取或设置此 Logger 是否继承其父的日志级别(Level)。
方法
AddHandler(Handler) 添加一个日志 Handler 以接收日志记录消息。
Config(String) 记录一条 Config 消息。
Fine(String) 记录一条 Fine 消息。
Finer(String) 记录一条 Finer 消息。
Finest(String) 记录一条 Finest 消息。
GetHandlers 获得与此 logger 相关的所有 Handler。
GetLogger(String) 查找或创建一个指定名称的 Logger。 如果已经创建了具有给定名称的 Logger,则返回该 Logger。否则创建一个新的 Logger。
GetLogger(String, ResourceManager) 查找或创建一个指定名称和 ResourceManager 的 Logger。 如果已经创建了具有给定名称的 Logger,则返回该 Logger。否则创 建一个新的 Logger。
GetParent 返回此 Logger 的父 Logger。
GetResourceManager 获取用于本地化日志消息的 ResourceManager。 注意,如果结果为 null,则 Logger 将使用从其父亲继承的 ResourceManager。
GetRootLogger 返回根 Logger。
Info(String) 记录一条 Info 消息。
IsLoggable(Level) 检查给定级别的消息实际上是否由此 logger 记录。
Log(Level, String) 记录一条消息。
Log(Level, String, Object) 记录带有一个对象参数的消息。
Log(Level, String, Object[]) 记录带有一组对象参数的消息。
Log(LogRecord) 记录一条 LogRecord。
RemoveHandler(Handler) 移除一个日志 Handler。
Severe(String) 记录一条 Severe 消息。 如果当前对于给定的消息级别而言 Logger 是启用的,那么将给定的消息转发到所有已注册的输出 Handler 对象。 
Warning(String) 记录一条 Warning 消息。
2、FileHandler
FileHandler() 仅通过 LogManager,使用日志配置信息创建 FileHandler。
FileHandler(String) 初始化要写入给定文件名的 FileHandler。
FileHandler(String, Boolean) 初始化要写入给定文件名的 FileHandler,并指定是否追加文件。
FileHandler(String, Int32, Boolean)  初始化要写入给定文件名的 FileHandler,并限制了文件大小和是否追加文件。
当使用第一个FileHandler()来创建时,我们可以使用下面的配置模板:
配置:存在配置文件的情况下,每个 FileHandler 都是使用以下设置执行初始化的。
<configuration>
    <appSettings>
        <!--为 Handler 指定默认的级别。-->
        <add key="Shinater.Logging.FileHandler.Level" value="All" />
        <!--指定要使用的 Filter 的类的完全限定名。-->
        <add key="Shinater.Logging.FileHandler.Filter" value="" />
        <!--指定要使用的 Formatter 的类的完全限定名。-->
        <add key="Shinater.Logging.FileHandler.Formatter" value="Shinater.Logging.SimpleFormatter" />
        <!--指定要使用的字符集编码的名称。-->
        <add key="Shinater.Logging.FileHandler.Encoding" value="UTF-8" />
        <!--指定是否应该在每次 Publish 消息之后,将缓冲消息刷新到文件。-->
        <add key="Shinater.Logging.FileHandler.AutoFlush" value="true" />
        <!--为生成的输出文件名称指定一个模式。-->
        <add key="Shinater.Logging.FileHandler.Pattern" value="%ln-%d.log" />
        <!--指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制。-->
        <add key="Shinater.Logging.FileHandler.Limit" value="0" />
        <!--指定是否应该将 FileHandler 追加到任何现有文件上。-->
        <add key="Shinater.Logging.FileHandler.Append" value="false" />
    </appSettings>
</configuration>
当使用FileHandler(String)、FileHandler(String, Boolean)、FileHandler(String, Int32, Boolean)来创建时我们可以使用下面的属性和方法来操作FileHandler的初始化
属性
AutoFlush 获取或设置该 Handler 是否在每次 StreamHandler.Publish(LogRecord) 消息之后,将缓冲消息刷新到基础流。 
BaseStream 获取或更改基础流。 
Encoding 获取或设置该 Handler 所用的字符编码。 
Filter 获取或设置 IFilter,以控制该 Handler 的输出。 
Formatter 获取或设置 IFormatter。Formatter 将用于格式化该 Handler 的 LogRecords。 
IsClosed 返回 Handler 是否被关闭,如果被关闭,就应该忽略传入的任何 LogRecord。 
Level 获取或设置日志级别,指定该 Handler 所记录的信息级别。将放弃低于该值的信息级别。 
方法
Close 关闭 Handler,并释放所有相关的资源。 
Dispose 关闭 Handler,并释放所有相关的资源。 
Flush 刷新所有缓冲消息。 
IsLoggable(LogRecord) 检查该 Handler 是否实际记录给定的 LogRecord。 
Publish(LogRecord) 发布 LogRecord。

简单的demo
生成日志的工具类,类名为LogUtis
public class LogUtils {    
    public Logger createLog() throws IOException{  
        Logger log = Logger.getLogger("tesglog");  //创建一个唯一的log标志,一般用类的名称  
        log.setLevel(Level.ALL);  //设置日志级别
        FileHandler fileHandler = new FileHandler("testlog.log",true);  //生成testlog.log的日志文件,文件是可追加的
        fileHandler.setLevel(Level.ALL);  //设置日志级别
        fileHandler.setFormatter(new LogFormatter());  //设置日志格式
        log.addHandler(fileHandler);  
        return log;
    } 
  
}   
class LogFormatter extends Formatter {  
    @Override  
    public String format(LogRecord record) {  
        Date date = new Date();  
        String sDate = date.toString();  
        return "[" + sDate + "]" + "[" + record.getLevel() + "]"  
                + record.getClass() + record.getMessage() + "\n";  
    }  
}
测试Log工具类
public class testLog {
public static void main(String[] args) throws IOException {
LogUtils logUtils=new LogUtils();
Logger log=logUtils.createLog();
log.info("插入日志1"); //插入的日志内容
}
}
测试结果
控制台
十月 09, 2015 10:08:20 下午 Log.testLog main
信息: 插入日志1
testLog.log文件
[Fri Oct 09 21:57:43 CST 2015][INFO]class java.util.logging.LogRecord插入日志1
[Fri Oct 09 22:08:20 CST 2015][INFO]class java.util.logging.LogRecord插入日志1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值