java logging

作者:原创时间:2022-04-02
文档

java logging是什么,让我们一起了解一下?

Logging是在Java中的API,让Java应用可以记录不同级别的信息,在debug过程中非常有用,如果系统因为各种各样的原因而崩溃,崩溃原因可以在日志中清晰地追溯。

 一般对于Java的日志处理,可能大家首先联想到的就是Log4J,Apache的这个项目确实广泛的应用于各个系统中,但是后来Sun在JDK中也添加了类似的日志功能,使用JDK自带的日志处理比Log4J特别好的一点就是不需要导入任何第三方Jar。

JDK自带日志类位于java.util.logging包中,同时在JDK安装目录的jre/lib下面有个默认的日志属性文件:logging.properties。

其次,JDK日志原理和Log4J原理类似:

1、LoggerManager类用于管理日志的配置,和Log4J的PropertyConfigurator类对应。

2、Logger类是日志信息记录的入口,和Log4J的Log类对应。

3、日志输出位置:控制台ConsoleHandler,文件FileHandler,以及流输出StreamHandler等,和Log4J的Appender对应。

4、日志输出格式:默认SimpleFormatter,XMLFormatter等,和Log4J的Pattern对应。

实战操作,一个自定义log输出到文件,不输出到控制台。

代码如下:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
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;
/**
 * 日志类FileLog,包含一个日志和一个文件
 * imutable
 */
public class FileLog {
private final Logger mylogger;
private final FileHandler f;
public FileLog(String name ,FileHandler fl) {
mylogger = Logger.getLogger(name);
this.mylogger.setLevel(Level.ALL);
this.mylogger.setUseParentHandlers(false);//不输出到控制台,如果没有该语句,则控制台和文件都会输出
this.f = fl;
}
/**
* 为日志添加行为信息
* @param message 行为信息内容,包括操作类型,计划项名字(如果对计划项进行操作)
*/
public void addmseeagelog(String message) {
this.mylogger.setLevel(Level.INFO);
//System.out.println("1");
//if(this.mylogger.getLevel().equals(Level.))
f.setFormatter(new myFormat());
this.mylogger.addHandler(f);
this.mylogger.info(message);
}
/**
* 为日志添加警告信息
* @param message 警告信息内容,包括异常/错误类型,异常/错误的具体信息、异常/错误处理的结果。或者为断言信息内容。
*/
public void addwarninglog(String message) {
this.mylogger.setLevel(Level.WARNING);
f.setFormatter(new myFormat());
this.mylogger.addHandler(f);
this.mylogger.warning(message);
}
public String logname() {
return this.mylogger.getName();
}
}
class myFormat extends Formatter{
/*文件日志格式*/
 @Override
 public String format(LogRecord record){
     ZonedDateTime zdf =ZonedDateTime.now();
     String sDate  = zdf.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
     //System.out.println("2+"+record.getMessage());
      return "["+ sDate + "]: "+record.getMessage()+"\n"+record.getLoggerName()+"\n";
    
 }
}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java logstash java main java malloc java mapping java math.ceil java matlab java matrix java memcpy java merge java method java mian java mina java mkdir java mmap java mockito java modelandview java module java monad java mono java mqtt java localtime java locale java list.contains java list.add java linq java linklist java leveldb java lamada java kudu java kmeans java keystore java kafka java jxl java jvm java jtextfield java jtable java jta java jstat java jstack java jsonp