您的位置:首页 > 编程语言 > Java开发

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

2015-10-09 23:55 423 查看
知识准备(如有不全,请查看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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: