java 记录考勤记录

Today we will look into Logger in Java. Java Logger provides logging in java programming.

今天,我们将研究Java中的Logger。 Java Logger提供Java编程中的日志记录。

Java中的记录器 (Logger in Java)

Java Logging API was introduced in 1.4 and you can use java logging API to log application messages. In this java logging tutorial, we will learn basic features of Java Logger. We will also look into Java Logger example of different logging levels, Logging Handlers, Formatters, Filters, Log Manager and logging configurations.

Java日志记录 API在1.4中引入,您可以使用Java日志记录API来记录应用程序消息。 在此Java日志记录教程中,我们将学习Java Logger的基本功能。 我们还将研究不同日志级别,日志处理程序,格式化程序,过滤器,日志管理器和日志配置的Java Logger示例。

Java记录器 (Java Logger)

java.util.logging.Logger is the class used to log application messages in java logging API.

java.util.logging.Logger是用于在Java日志记录API中记录应用程序消息的类。

We can create java Logger with very simple one line code as;

我们可以用非常简单的一行代码创建Java Logger:

Logger logger = Logger.getLogger(MyClass.class.getName());

Java记录级别 (Java Logging Levels)

java.util.logging.Level defines the different levels of java logging. There are seven levels of logging in java.

java.util.logging.Level定义了Java日志记录的不同级别。 Java有七个登录级别。

  1. SEVERE (highest)严重(最高)
  2. WARNING警告
  3. INFO信息
  4. CONFIG配置
  5. FINE精细
  6. FINER罚款
  7. FINEST最好的

There are two other logging levels, OFF that will turn off all logging and ALL that will log all the messages.

还有其他两个日志记录级别,“ 关闭”将关闭所有日志记录,“ 所有”将记录所有消息。

We can set the logger level using following code:

我们可以使用以下代码设置记录器级别:

logger.setLevel(Level.FINE);

The logs will be generated for all the levels equal to or greater than the logger level. For example if logger level is set to INFO, logs will be generated for INFO, WARNING and SEVERE logging messages.

将为等于或大于记录器级别的所有级别生成日志。 例如,如果记录器级别设置为INFO,则将为INFO,WARNING和SEVERE记录消息生成日志。

Java记录处理程序 (Java Logging Handlers)

We can add multiple handlers to a java logger and whenever we log any message, every handler will process it accordingly. There are two default handlers provided by Java Logging API.

我们可以向Java记录器添加多个处理程序,并且每当记录任何消息时,每个处理程序都会对其进行相应处理。 Java Logging API提供了两个默认处理程序。

  1. ConsoleHandler: This handler writes all the logging messages to consoleConsoleHandler :此处理程序将所有日志消息写入控制台
  2. FileHandler: This handler writes all the logging messages to file in the XML format.FileHandler :此处理程序将所有日志记录消息以XML格式写入文件。

We can create our own custom handlers also to perform specific tasks. To create our own Handler class, we need to extend java.util.logging.Handler class or any of it’s subclasses like StreamHandler, SocketHandler etc.

我们还可以创建自己的自定义处理程序来执行特定任务。 要创建自己的Handler类,我们需要扩展java.util.logging.Handler类或它的任何子类,例如StreamHandler,SocketHandler等。

Here is an example of a custom java logging handler:

这是一个自定义Java日志处理程序的示例:

package com.journaldev.log;import java.util.logging.LogRecord;
import java.util.logging.StreamHandler;public class MyHandler extends StreamHandler {@Overridepublic void publish(LogRecord record) {//add own logic to publishsuper.publish(record);}@Overridepublic void flush() {super.flush();}@Overridepublic void close() throws SecurityException {super.close();}}

Java记录格式化程序 (Java Logging Formatters)

Formatters are used to format the log messages. There are two available formatters in java logging API.

格式化程序用于格式化日志消息。 java记录API中有两个可用的格式化程序。

  1. SimpleFormatter: This formatter generates text messages with basic information. ConsoleHandler uses this formatter class to print log messages to console.SimpleFormatter :此格式化程序生成带有基本信息的文本消息。 ConsoleHandler使用此格式化程序类将日志消息打印到控制台。
  2. XMLFormatter: This formatter generates XML message for the log, FileHandler uses XMLFormatter as a default formatter.XMLFormatter :此格式化程序为日志生成XML消息,FileHandler使用XMLFormatter作为默认格式化程序。

We can create our own custom Formatter class by extending java.util.logging.Formatter class and attach it to any of the handlers. Here is an example of a simple custom formatter class.

我们可以通过扩展java.util.logging.Formatter类来创建自己的自定义Formatter类,并将其附加到任何处理程序上。 这是一个简单的自定义格式化程序类的示例。

package com.journaldev.log;import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;public class MyFormatter extends Formatter {@Overridepublic String format(LogRecord record) {return record.getThreadID()+"::"+record.getSourceClassName()+"::"+record.getSourceMethodName()+"::"+new Date(record.getMillis())+"::"+record.getMessage()+"\n";}}

Java中的记录器– Java日志管理器 (Logger in Java – Java Log Manager)

java.util.logging.LogManager is the class that reads the logging configuration, create and maintains the logger instances. We can use this class to set our own application specific configuration.

java.util.logging.LogManager是读取日志配置,创建和维护记录器实例的类。 我们可以使用此类来设置我们自己的应用程序特定的配置。

LogManager.getLogManager().readConfiguration(new FileInputStream("mylogging.properties"));

Here is an example of Java Logging API Configuration file. If we don’t specify any configuration, it’s read from JRE Home lib/logging.properties file.

这是Java Logging API配置文件的示例。 如果不指定任何配置,则从JRE Home lib/logging.properties文件中读取。

mylogging.properties

mylogging.properties

handlers= java.util.logging.ConsoleHandler.level= FINE# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormattercom.journaldev.files = SEVERE

Here is a simple java program showing usage of Logger in Java.

这是一个简单的Java程序,显示了Java中Logger的用法。

package com.journaldev.log;import java.io.FileInputStream;
import java.io.IOException;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;public class LoggingExample {static Logger logger = Logger.getLogger(LoggingExample.class.getName());public static void main(String[] args) {try {LogManager.getLogManager().readConfiguration(new FileInputStream("mylogging.properties"));} catch (SecurityException | IOException e1) {e1.printStackTrace();}logger.setLevel(Level.FINE);logger.addHandler(new ConsoleHandler());//adding custom handlerlogger.addHandler(new MyHandler());try {//FileHandler file name with max size and number of log files limitHandler fileHandler = new FileHandler("/Users/pankaj/tmp/logger.log", 2000, 5);fileHandler.setFormatter(new MyFormatter());//setting custom filter for FileHandlerfileHandler.setFilter(new MyFilter());logger.addHandler(fileHandler);for(int i=0; i<1000; i++){//logging messageslogger.log(Level.INFO, "Msg"+i);}logger.log(Level.CONFIG, "Config data");} catch (SecurityException | IOException e) {e.printStackTrace();}}}

When you will run above java logger example program, you will notice that CONFIG log is not getting printed in file, that is because of MyFilter class.

当您在Java logger示例程序上方运行时,您会注意到CONFIG日志未在文件中打印出来,这是由于MyFilter类所致。

package com.journaldev.log;import java.util.logging.Filter;
import java.util.logging.Level;
import java.util.logging.LogRecord;public class MyFilter implements Filter {@Overridepublic boolean isLoggable(LogRecord log) {//don't log CONFIG logs in fileif(log.getLevel() == Level.CONFIG) return false;return true;}}

Also the output format will be same as defined by MyFormatter class.

同样,输出格式将与MyFormatter类定义的格式相同。

1::com.journaldev.log.LoggingExample::main::Sat Dec 15 01:42:43 PST 2012::Msg977
1::com.journaldev.log.LoggingExample::main::Sat Dec 15 01:42:43 PST 2012::Msg978
1::com.journaldev.log.LoggingExample::main::Sat Dec 15 01:42:43 PST 2012::Msg979
1::com.journaldev.log.LoggingExample::main::Sat Dec 15 01:42:43 PST 2012::Msg980

If we don’t add our own Formatter class to FileHandler, the log message will be printed like this.

如果我们不将自己的Formatter类添加到FileHandler,则日志消息将像这样打印。

<record><date>2012-12-14T17:03:13</date><millis>1355533393319</millis><sequence>996</sequence><logger>com.journaldev.log.LoggingExample</logger><level>INFO</level><class>com.journaldev.log.LoggingExample</class><method>main</method><thread>1</thread><message>Msg996</message>
</record>

Console log messages will be of following format:

控制台日志消息将采用以下格式:

Dec 15, 2012 1:42:43 AM com.journaldev.log.LoggingExample main
INFO: Msg997
Dec 15, 2012 1:42:43 AM com.journaldev.log.LoggingExample main
INFO: Msg998
Dec 15, 2012 1:42:43 AM com.journaldev.log.LoggingExample main
INFO: Msg998

Below image shows the final Java Logger example project.

下图显示了最终的Java Logger示例项目。

That’s all for Logger in Java and Java Logger Example. You can download the project from below link.

Java和Java Logger示例中的Logger就这些了。 您可以从下面的链接下载项目。

Download Java Logger Example Project下载Java Logger示例项目

Reference: Java Logging API

参考: Java Logging API

翻译自: https://www.journaldev.com/977/logger-in-java-logging-example

java 记录考勤记录

java 记录考勤记录_Java中的记录器– Java记录示例相关推荐

  1. java的poll方法_Java中的队列poll()方法示例

    使用poll()方法获取并删除Queue中的第一个元素. 创建一个队列-Queue q = new LinkedList(); 添加一些元素-q.add("abc"); q.add ...

  2. JAVA程序设计计时器代码_Java中的定时器Timer使用示例代码详解

    一.类概述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 二.代码 ...

  3. 获取mysql可行方法_Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法...

    <Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法>要点: 本文介绍了Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法,希望对您有用.如果有 ...

  4. Java中的记录器 - Java日志示例

    Java中的记录器 - Java日志示例 今天我们将研究Java中的Logger.Java Logger提供了java编程的日志记录. 目录[ 隐藏 ] 1 Java中的记录器 1.1 Java Lo ...

  5. java 企业版_下列版本中哪个是Java 企业版

    下列版本中哪个是Java 企业版 2021-02-07 下列版本中哪个是Java 企业版 张爱玲评价自己的服饰:"仿佛穿着博物院的()到处走,遍体森森然飘飘欲仙".转动惯量是刚体转 ...

  6. java log日志函数_Java 中的 AWS Lambda 函数日志记录 - AWS Lambda

    AWS 文档中描述的 AWS 服务或功能可能因区域而异.要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门. 本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. Ja ...

  7. java中有没有栈_Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...

  8. java 如何忽略异常_java中如何解决异常

    原文 | dzone.com/articles/9-- 作者 | Thorben Janssen 翻译 | geekymv 无论你是初学者还是经验丰富的开发人员,对于你和你的团队来说,提高异常处理的能 ...

  9. java 文件解析异常_java中异常的解析

    Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...

最新文章

  1. Java多线程,Thread,Runnable,Callable Task,Future<Task>,CompletionService
  2. python的assert(断言)异常步骤机制
  3. 静态链接库与动态链接库的区别(Sqlite\Visual Studio 2017)
  4. Swift 学习手记1,pod 的 类库使用
  5. python为什么这么小_同样是 Python,怎么区别这么大
  6. 关于猿如何找对象,心里没点那啥数吗?
  7. PNG,GIF,JPG的区别及如何选
  8. excel粘贴时出现故障_Workfine——快速整理数据的能力甩了excel几条街
  9. python动态是什么意思_怎么看出自己是Python什么阶段
  10. MYSQL 存储过程和函数 案例 例子
  11. jsp+servlet实现模糊查询和分页效果
  12. 自动刷新wu2198股市直播内容
  13. 帅地鸽了大半年,一个专注于面试、基础知识、算法的小破站上线了
  14. 文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶
  15. ShadowGun Shader学习
  16. 美团外卖uml流程图_以美团外卖为例,区别业务流程图和页面流程图
  17. java声音提取_如何在Android中使用java从mp4中提取音频到mp...
  18. 阿里巴巴宣布5.4亿战略投资中国万网==互联网电子商务绑定互联网基础服务为手机电子商务开拓铺路
  19. 电磁场与波 matlab,电磁场数值计算法与MATLAB实现
  20. 如何提高抗压能力和适应能力

热门文章

  1. Shell-杀死指定进程
  2. linux 服务器网络有关的内核参数
  3. HDU 1754 I Hate It(线段树版)
  4. 毕业2月有余,苏州同学腐败第二次大聚会
  5. [转载] python cmp函数比较字典_Python 字典(Dictionary) cmp()方法
  6. [转载] Python中endswith() 函数法用于判断字符串是否以指定后缀结尾
  7. 实用机器人设计(二)-传感器
  8. 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes
  9. C/C++ 位域总结
  10. 西安力邦智能医疗amp;可穿戴设备沙龙--第1期---苹果HealthKit、谷歌GoogleFit来袭,智能医疗要爆发吗?...