`

java.util.log学习

阅读更多
今天学习java.util.logging类包方便以后查看。
这里以一个例子说明:
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
import java.util.logging.LoggingMXBean;
import java.util.logging.MemoryHandler;
import java.util.logging.SimpleFormatter;
import java.util.logging.SocketHandler;

public class LoggingProgramSetPubSubpro {
	public static void main(String[] args) throws Exception
	{ 
		LogManager lm = LogManager.getLogManager();
		Logger logger = Logger.getLogger("loggingTest");
		Logger logger1 = Logger.getLogger("loggingTest.b");
		lm.addLogger(logger);
		lm.addLogger(logger1);


		logger.setLevel(Level.INFO);//这个设定最重要


		Handler consoleHandler = new ConsoleHandler();//控制台handler
		consoleHandler.setLevel(Level.ALL);
		Formatter ft1 = new YAYFormatter();//定义自己的formatter
		consoleHandler.setFormatter(ft1);
		logger.addHandler(consoleHandler);


		Handler fh = new FileHandler("c:\\java%g.log");//文件handler
		logger.addHandler(fh);//一个logger可以有多个handler
		Formatter ft = new SimpleFormatter();//FileHandler默认的Formatter是XMLFormatter 
		fh.setFormatter(ft);
		fh.setLevel(Level.OFF);

		Handler handler = new SocketHandler("localhost", 8099); //网络handler
		handler.setFormatter(new SimpleFormatter());
		logger.addHandler(handler);     

		Handler meh = new MemoryHandler(fh,1,Level.WARNING);//内存handler,当目标target的level等级超过Level.WARNING时向target push记录
		logger.addHandler(meh);

		logger.severe("嚴重訊息");
		logger.warning("警示訊息");
		logger.info("一般訊息");
		logger.config("設定方面的訊息");
		logger.fine("細微的訊息");
		logger.finer("更細微的訊息");
		logger.finest("最細微的訊息");
		
		
		LoggingMXBean mx = LogManager.getLoggingMXBean();
		logger.info("loggingTest的level是:"+mx.getLoggerLevel("loggingTest"));
		logger.info("loggingTest的父 logger 名称是:"+mx.getParentLoggerName("loggingTest.b"));
		logger.info(mx.getLoggerNames().size()+"" );
		consoleHandler.close();
		fh.close();
		meh.close();
		handler.close();
	}

}

定义自己的formmater
import java.util.logging.Formatter;
import java.util.logging.LogRecord;

public class YAYFormatter extends Formatter {

	@Override
	public String format(LogRecord logRecord) {

		return   "LogRecord info: " + logRecord.getSourceClassName() +//就是哪个类里面用的了你
		"\n" +"Level\t|\tLoggerName\t|\tMessage\t|\n" +
		logRecord.getLevel() + //是SEVERE还是WARNING还是别的
		"\t|\t" + 
		logRecord.getLoggerName() +//这个logger发布者
		"\t|\t" + 
		logRecord.getMessage() + //消息内容
		"\t|\n\n";  
	}

}

读取sockethandler的服务端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

import javax.net.ServerSocketFactory;

public class LogServer {
	private static final int PORT_NUM = 8099;   
	public static void main(String args[]) {   
		ServerSocketFactory serverSocketFactory =   
			ServerSocketFactory.getDefault();   
		ServerSocket serverSocket = null;   
		try {   
			serverSocket =   
				serverSocketFactory.createServerSocket(PORT_NUM);   
		} catch (IOException ignored) {   
			System.err.println("无法创建服务");   
			System.exit(-1);   
		}   
		System.out.printf("LogServer 运行端口: %s%n", PORT_NUM);   
		while (true)   

		{   
			Socket socket = null;   
			try {   
				socket = serverSocket.accept();   
				InputStream is = socket.getInputStream();   
				BufferedReader br = new BufferedReader(   
						new InputStreamReader(is, "GBK"));   
				String line = null;   
				while ((line = br.readLine()) != null    
				) {   
					System.out.println(line);   
				}   
			} catch (IOException exception) {   
				// 处理下在个请求.   
			} finally {   
				if (socket != null) {   
					try {   
						socket.close();   
					} catch (IOException ignored) {   
					}   
				}   
			}   
		}   
	} 
}

Handler 对象从 Logger 中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。


java类库提供了以上几种handler实现



上图是java.util.logging的uml
  • 大小: 14.6 KB
  • 大小: 11.2 KB
分享到:
评论

相关推荐

    java.util.logging.Logger使用详解

    ### Java.util.logging.Logger 使用详解 #### 一、创建Logger对象 在Java中,`java.util.logging.Logger` 是...通过本文的学习,开发者能够更好地掌握 `java.util.logging` 框架的核心概念,并在实际项目中灵活运用。

    log4j.properties

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

    spring-web-2.5.jar

    org.springframework.web.util.Log4jConfigListener.class org.springframework.web.util.Log4jConfigServlet.class org.springframework.web.util.Log4jWebConfigurer.class org.springframework.web.util....

    java.util.ServiceLoader demo

    在Java编程语言中,`java.util.ServiceLoader` 是一个实用工具类,用于加载符合特定接口或抽象类的服务提供者。这个工具在Java平台标准版(Java SE)中被广泛使用,尤其是在实现模块化和插件化系统时。下面将详细...

    java.lang.ClassNotFoundException异常的解决1

    在Java 6、7和8中,Java平台的标准版(Java SE)包含了Java企业版(Java EE)的一些API,如JAXB(Java Architecture for XML Binding)。然而,从Java 9开始,为了实现模块化并提高系统的可维护性和安全性,Java EE...

    最最常用的 100 个 Java类分享

    49. `android.util.Log`:Android的日志工具类,用于输出调试信息。 50. `android.content.Intent`:Intent用于启动其他组件或传递数据。 51. `java.lang.reflect.InvocationTargetException`:当调用反射方法时抛...

    tomcat配置生成的日志文件按照日期新建工具

    Tomcat默认使用了Java的`java.util.logging`框架,也支持通过Log4j或者Logback等第三方日志框架进行日志处理。在Tomcat的`conf/logging.properties`或`conf/log4j.properties`(取决于所使用的日志框架)文件中,...

    java swing用Logger输出错误日志.docx

    java.util.logging.FileHandler.pattern = %h/java%u.log ``` 这里,`%h`代表用户的家目录,`%u`是一个解决冲突的唯一数字,`%g`用于区分循环日志的版本号。此外,可以设置每个文件的最大大小、循环文件的数量以及...

    java.util源码-java-source-code:java.util源码阅读

    Java.util 源码分析 Java.util 包是 Java 核心库的重要组成部分,它包含了许多用于日常编程的工具类和接口,如集合框架、日期时间处理、随机数生成、事件处理等。深入理解这个包的源码对于提升Java开发者的技能至关...

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

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

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    在Java开发中,日志管理是不可或缺的一部分,它帮助我们跟踪程序运行状态、定位错误和调试问题。Log4j作为一款广泛使用的日志框架,历经多次迭代,现在已经发展到了Log4j2。本文将详细探讨Log4j2中的两个关键组件:...

    安卓日志分析崩溃拦截相关-这个demo主要讲解了怎样使用log查看日志和怎样控制log的等级.zip

    例如,`Log.d(tag, message)`用于打印DEBUG级别的日志,其中`tag`是日志的标识,`message`是具体的信息。 3. 日志过滤器:通过`adb logcat`命令,开发者可以在终端上查看设备上的日志,并使用过滤器筛选特定的日志...

    spring jdbctemplate 封裝

    import java.util.regex.PatternSyntaxException; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans....

    log4j日志驱动包

    log4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling.log log4j.appender.ROLLING_FILE.Append=true //true:添加 false:覆盖 log4j.appender.ROLLING_FILE.MaxFileSize=10...

    Java原生日志工具Logger参考.docx

    log.setLevel(Level.INFO); log.info("111"); } } ``` 此外,Logger也提供了一个LogManager类,用于读取和写入日志配置文件。例如,在下面的示例代码中,我们使用LogManager来读取一个名为logging.properties的...

    tomcat log4j 配置及需要的几个jar

    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....

    Java Logger Logging 封装

    `Logger`是Java标准库`java.util.logging`包提供的日志工具,它提供了多种级别的日志记录,如`SEVERE`、`WARNING`、`INFO`、`CONFIG`、`FINE`、`FINER`和`FINEST`。本篇文章将深入探讨Java中的`Logger`封装,以及...

    安卓开发-Android 主流的图片浏览的全屏缩放效果SmoothImageDemo软件源码

    安卓开发-Android 主流的图片浏览的全屏缩放效果SmoothImageDemo软件...import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.wi

    ibatis.util包

    1. **Logger**: Ibatis提供了一个日志接口`org.apache.ibatis.logging.Log`,而`ibatis.util.LogFactory`则负责根据用户配置的实现(如Log4j、SLF4J或Java内置的日志系统)创建对应的日志实例,用于记录SQL执行和...

    schedule

    通过上述内容,我们不仅了解了如何在Java中使用`java.util.Timer`和`java.util.TimerTask`来实现定时任务,而且还学习了如何在Web应用中利用这些工具来完成周期性的任务。这种方法特别适用于需要定期执行某些操作的...

Global site tag (gtag.js) - Google Analytics